次の方法で(SQL Serverで)外部キーを作成しました。
alter table company add CountryID varchar(3);
alter table company add constraint Company_CountryID_FK foreign key(CountryID)
references Country;
次に、このクエリを実行します。
alter table company drop column CountryID;
私はこのエラーを受け取ります:
メッセージ5074、レベル16、状態4、行2
オブジェクト「Company_CountryID_FK」は列「CountryID」に依存しています。
メッセージ4922、レベル16、状態9、行2
1つ以上のオブジェクトがこの列にアクセスするため、ALTER TABLE DROP COLUMN CountryIDが失敗しました
私はこれを試してみましたが、まだ動作していないようです:
alter table company drop foreign key Company_CountryID_FK;
alter table company drop column CountryID;
CountryID
列を削除するにはどうすればよいですか?
ありがとう。
試して
alter table company drop constraint Company_CountryID_FK
alter table company drop column CountryID
これは動作します:
ALTER TABLE [dbo].[company] DROP CONSTRAINT [Company_CountryID_FK]
これはあなたに役立つと思います...
DECLARE @ConstraintName nvarchar(200)
SELECT
@ConstraintName = KCU.CONSTRAINT_NAME
FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS AS RC
INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS KCU
ON KCU.CONSTRAINT_CATALOG = RC.CONSTRAINT_CATALOG
AND KCU.CONSTRAINT_SCHEMA = RC.CONSTRAINT_SCHEMA
AND KCU.CONSTRAINT_NAME = RC.CONSTRAINT_NAME
WHERE
KCU.TABLE_NAME = 'TABLE_NAME' AND
KCU.COLUMN_NAME = 'TABLE_COLUMN_NAME'
IF @ConstraintName IS NOT NULL EXEC('alter table TABLE_NAME drop CONSTRAINT ' + @ConstraintName)
特定のテーブルと列に基づいて外部キー制約を削除します。
最初に制約の存在を確認してから、ドロップします。
if exists (select 1 from sys.objects where name = 'Company_CountryID_FK' and type='F')
begin
alter table company drop constraint Company_CountryID_FK
end
alter table company drop constraint Company_CountryID_FK
私はMSSQLを知りませんが、知らないでしょう:
alter table company drop **constraint** Company_CountryID_FK;
テーブルを右クリックして[変更]を選択し、属性に移動して右クリックし、主キーのドロップを選択することもできます。
FK制約または列自体を削除しようとしていますか?
制約を削除するには:
alter table company drop constraint Company_CountryID_FK
制約をドロップするまで、列をドロップすることはできません。