2013-05-14 45 views
0

我正在使用SQL Server,並且存在多個表中的列Asset_Serial更改存在於多個表中的列數據類型

的問題是,當我想改變它的類型我得到了這樣的事情:

消息5074,級別16,狀態1,行1
對象「PK_Assets」是依賴於列' Asset_Serial」。

Msg 5074,Level 16,State 1,Line 1
對象'FK_Assigned_Assets_Assets'依賴於'Asset_Serial'列。

消息4922,級別16,狀態9,行1
ALTER TABLE ALTER COLUMN Asset_Serial失敗,因爲一個或多個對象訪問此列。

任何建議...?

+0

檢查這個問題:http://stackoverflow.com/questions/9866989/alter-table-on-dependant-column – Ognjen 2013-05-14 11:22:59

回答

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