0

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

问题是当我想改变它的类型时,我得到了这样的东西:

消息 5074,级别 16,状态 1,第 1 行
对象“PK_Assets”依赖于“Asset_Serial”列。

消息 5074,级别 16,状态 1,第 1 行
对象“FK_Assigned_Assets_Assets”依赖于“Asset_Serial”列。

消息 4922,级别 16,状态 9,第 1 行
ALTER TABLE ALTER COLUMN Asset_Serial 失败,因为一个或多个对象访问此列。

有什么建议么...?

4

1 回答 1

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
于 2013-05-14T11:29:18.553 回答