Pages

2017年3月17日金曜日

SQLの外部参照制約の削除について

こんにちは、例の新人です。

今回は、SQLの外部参照制約の削除の仕方について学習したことを記録します。

まずは、外部参照制約がどういうものなのかを記述します。

外部参照制約は、ある表のある列の値は、別の表のある列のある列の値と必ず一致しなければならない時に使います。例えば、50メートル自由形参加選手の選手名は、水泳大会参加選手の選手名と一致しなければいけません。

そういった時に、以下のような構文で外部参照制約を追加できます。

ALTER TABLE 50メートル自由形参加選手 ADD FOREIGN KEY(選手名) REFERENCES 水泳大会参加選手(選手名);

こうすることで、50メートル自由形参加選手の選手名は水泳大会参加選手の選手名と一致するものでなければいけない制約をかけられます。例えば50メートル自由形参加選手にINSERT文で「追加ためす」さんを追加しようとしても、水泳大会参加選手の選手名には「追加ためす」さんの名前はありませんので、このデータ更新は無効となります。

この制約を削除するためには、まず制約の名前を知る必要があります。

SQLサーバがメタデータ(あるデータに付随するデータ)取得のために提供する方法の一つである情報スキーマビューに、TABLE_CONSTRAINTSビューがあります。これは、現在のユーザが所有するテーブルに属するすべての制約があります。これに、参照のための標準インターフェイスであるINFORMATION_SCHEMAを加え、以下の構文で外部参照制約の情報を表示できます。

SELECT * FROM  INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE CONSTRAINT_TYPE = ’FOREIGN KEY’ AND TABLE_NAME = ’50メートル自由形参加選手’;

ここから50メートル自由形参加選手の外部参照制約の情報を表示できます。そして、「CONSTRAINT_NAME」が制約の名前になります。

そして、削除するには以下のような構文を用います。

ALTER TABLE 50メートル自由形参加選手 DROP CONSTRAINT 「制約の名前」;

以上が外部参照制約を削除する方法です。

0 件のコメント:

コメントを投稿