更改多个表中存在的列数据类型

时间:2013-05-14 11:13:16

标签: sql-server

我正在使用SQL Server,并且我有一个列Asset_Serial,它存在于多个表中。

问题在于,当我想改变它的类型时,我得到了类似的东西:

  

Msg 5074,Level 16,State 1,Line 1
  对象'PK_Assets'依赖于列'Asset_Serial'。

     

Msg 5074,Level 16,State 1,Line 1
  对象'FK_Assigned_Assets_Assets'依赖于'Asset_Serial'列。

     

Msg 4922,Level 16,State 9,Line 1   ALTER TABLE ALTER COLUMN Asset_Serial失败,因为一个或多个对象访问此列。

有任何建议......?

1 个答案:

答案 0 :(得分:1)

Asset_Serial是当前表的主键和另一个表的外键 首先你应该删除你的两个约束,然后改变两个表中的字段,最后再次创建约束

IF (OBJECT_ID('FK_ConstraintName', 'F') IS NOT NULL)
BEGIN
//Drop Constraint
    ALTER table [TableName] drop constraint [FK_ConstraintName]
    ALTER table [TableName] drop constraint [PK_ConstraintName]
//Alter Table Change Column
     ALTER TABLE ALTER COLUMN Asset_Serial
//Create Contraints
     ALTER TABLE [TableName] ADD CONSTRAINT PK_ConstraintName PRIMARY KEY (FieldName);

      ALTER TABLE [dbo].[TableName] 
        WITH CHECK ADD CONSTRAINT [FK_TableName_TableName2] FOREIGN KEY([Asset_Serial])
        REFERENCES [dbo].[TableName2] ([Asset_Serial])
END