我正在使用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失败,因为一个或多个对象访问此列。
有任何建议......?
答案 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