首页 > 解决方案 > T-SQL 修改列

问题描述

我想修改此列,但它在 T-SQL 中不起作用:

create table logininfo
( 
    ID int primary key ,
    modepasse varchar(10) not null, 
)

我想将ID的数据类型更改为varchar(20).

当我使用这个命令时:

alter table logininfo
    alter column ID varchar(10) 

它不起作用。

请帮我

标签: sqlsql-serverdatabase

解决方案


您应该先删除Primary key,最好按照以下语法创建表:

DROP TABLE IF EXISTS logininfo

CREATE TABLE logininfo
( 
    ID INT,
    modepasse VARCHAR(10) NOT NULL, 
    CONSTRAINT PK_logininfo PRIMARY KEY (ID)
)

如您所见,您可以PK在定义列并命名它们(有意义的名称)之后定义其他约束,现在您必须先删除 pk 然后更改列 ID

ALTER TABLE logininfo
DROP CONSTRAINT PK_logininfo ;

现在您可以更改所需的列:

ALTER TABLE logininfo
    ALTER COLUMN ID NVARCHAR(10) NOT NULL

如果您想再次将此列用作主键,则必须将其视为 NOT NULL

现在将其设置为主键:

ALTER TABLE logininfo
ADD CONSTRAINT PK_logininfo PRIMARY KEY (ID)

推荐阅读