在表中,Id列先前已设置为十进制(10,0)。我可以看到这没用,我想把它改成int类型。
但是表包含一些数据,我想保留数据。 Id是主键,已被其他表引用。还值得一提的是该列是自动递增的。
我想知道是否可以将decimal更改为int而不影响表中的现有数据?
答案 0 :(得分:0)
您需要首先删除引用此表的所有外键约束然后删除Primary key constraint
,然后使用datatype int
更改列,然后再次添加Primary key
。
对于每个参考表执行此行
1. ALTER TABLE foreignkeytableName DROP FOREIGN KEY constraintName;
ALTER TABLE foreignkeytableName ALTER Column RefColumnName Int ;
对于主要表格
1. ALTER TABLE TableName drop constraint Primary key Constraint Name
2. ALTER TABLE TableName ALTER Column ID Int
3. ALTER TABLE TableName ADD Primary key (ID)
为每个参考表添加外键
ALTER TABLE foreignkeytableName ADD CONSTRAINT ConstraitName
FOREIGN KEY (Fk_ColumnName) REFERENCES PrimaryKeyTableName(PK_ColumnName)
答案 1 :(得分:-1)
首先,您需要删除PRIMARY KEY
约束,然后将列更改为int,然后再次为此列创建PRIMARY KEY
,如下所示:
alter table Table
drop constraint constraint_name
alter table Table
alter column column_name int not null
alter table Table
add constraint constraint_name primary key (column_name)