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 は、1 つ以上のオブジェクトがこの列にアクセスしているため、失敗しました。

助言がありますか...?

4

1 に答える 1

1

Asset_Serial は、現在のテーブルの主キーであり、別のテーブルの外部キーです。まず、2 つの制約を削除してから、両方のテーブルのフィールドを変更し、最後に制約を再度作成する必要があります。

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 に答える