SQLServerでNullが設定された外部キー
次のチュートリアルでは、SQLServerでSetNullOnDelete制約を使用した外部キー外部キーについて説明します。
SQLServerの削除時にNULLを設定する外部キーとは何ですか?
外部キーは削除時にNullを設定するようにバインドされます。つまり、親テーブルのレコードが削除されると、外部キー値フィールドの子テーブルの対応するレコードが設定されます。 NULLに。子テーブルに書き込まれたテーブルは、SQLServerから削除されません。
削除時のNULL値がCREATETABLEまたはALTERTABLEステートメントで作成できる場合の外部キー。
CREATETABLEステートメントで削除したときにNULL値を設定する制約付きの外部キーを作成します
構文
CREATETABLE bang_con
(
cot1 kieudulieu [ NULL | NOT NULL ],
cot2 kieudulieu [ NULL | NOT NULL ],
…
CONSTRAINT fk_ten
FOREIGN KEY (cot_con1, cot_con2, … cot_con_n)
REFERENCES bang_me (cot_me1, cot_me2, … cot_me_n)
ON DELETE SET NULL
[ ON UPDATE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ]
);
bang_con
作成する子テーブルの名前。
cot1、cot2
テーブルに作成する列。各列には1つのデータ型があり、NULLまたはNOT NULL値を含めるように指定する必要があります。それ以外の場合、デフォルトはNULLです。
SQLServerのデータ型
fk_ten
作成する外部キー制約の名前。
cot_con1、cot_con2 、。 cot_con_n
bang_conの列は、bang_meの主キーを参照したいと考えています。
bang_me
親テーブルの名前には、bang_conで使用される主キーが含まれています。
cot_me1、cot_me2 、。 cot_me_n
bang_meの主キーを構成する列。外部キーは、データと列cot_con1、cot_con2、の間に制約を作成します。 bang_conのcot_con_n。
ON DELETE SET NULL
親テーブルのデータが削除されると、子テーブルのデータはNULLに設定されます。サブデータは削除されません。
更新中
オプション。親データが更新されたときに子データをどのように処理するかを示します。オプションNOACTION、CASCADE、SET NULL、SETDEFAULTがあります。
アクションなし
ONDELETEまたはONUPDATEで使用します。つまり、親データが削除または更新された場合、子データには何もしません。
CASCADE
ONDELETEまたはONUPDATEで使用します。つまり、親データが削除または更新されると、子データが削除または更新されます。
SET NULL
ONDELETEまたはONUPDATEで使用します。これは、親データが削除または更新されるときに子データがNULLに設定されることを意味します。
デフォルトに設定
ONDELETEまたはONUPDATEで使用します。これは、親データが削除または更新されたときに子データがデフォルト値に設定されることを意味します。
例
CREATE TABLE sanpham
( id_sanpham INT PRIMARY KEY,
ten_sanpham VARCHAR(50) NOT NULL,
phan_loai VARCHAR(25)
);
CREATE TABLE hangtonkho
( id_hangtonkho INT PRIMARY KEY,
id_sanpham INT,
soluong INT,
luong_toithieu INT,
luong_toida INT,
CONSTRAINT fk_htk_id_sanpham
FOREIGN KEY (id_sanpham)
REFERENCES sanpham (id_sanpham)
ON DELETE SET NULL
);
この例では、情報フィールドid_sanphamを含む主キーを使用して親テーブルsanphamを作成しました。次に、削除制約のある外部キーを持つhangtonkhoという名前の子テーブルがあります。 CREATE TABLEステートメントは、fk_htk_id_sanphamという名前のhangtonkhoテーブルに外部キーを作成します。外部キーは、hangtonkhoテーブルのid_sanpham列とsanphamテーブルのid_sanphamの間の関係を形成します。
この外部キーはON DELETE SET NULLで指定され、親テーブルのデータが次の場合に子テーブルの対応するレコード値をNULLに設定する必要があることをSQLServerに通知します。削除されました。この例では、id_sanphamがテーブルから削除されると、id_sanphamを使用するhangtonkhoテーブルの対応するレコードがNULLに設定されます。
hangtonkhoテーブルのid_sanpham列はNULLに設定されるため、この列がNULL値を受信できるようにする必要があることに注意してください。 CREATEAで作成するときにNOTNULLに設定すると、次のエラーが発生します。
CREATE TABLE hangtonkho
( id_hangtonkho INT PRIMARY KEY,
id_sanpham INT NOT NULL,
soluong INT,
luong_toithieu INT,
luong_toida INT,
CONSTRAINT fk_htk_id_sanpham
FOREIGN KEY (id_sanpham)
REFERENCES sanpham (id_sanpham)
ON DELETE SET NULL
);
Msg 1761, Level 16, State 0, Line 1
Cannot create the foreign key 'fk_htk_id_sanpham' with the SET NULL referential action, because one or more referencing columns are not nullable.
Msg 1750, Level 16, State 0, Line 1
Could
thể tạo constraint hoặc chỉ mục. Xem lỗi trước.
以下に示すように、NULL値を取得するようにhangtonkhoテーブルのid_sanpham列を定義してください。
CREATE TABLE hangtonkho
( id_hangtonkho INT PRIMARY KEY,
id_sanpham INT,
soluong INT,
luong_toithieu INT,
luong_toida INT,
CONSTRAINT fk_htk_id_sanpham
FOREIGN KEY (id_sanpham)
REFERENCES sanpham (id_sanpham)
ON DELETE SET NULL
);
Comma
nd (s) completed successfully.
制約を使用して外部キーを作成すると、ALTERTABLEステートメントを使用して削除するときにNULL値が設定されます
構文
ALTER TABLE state_con
ADD CONSTRAINT fk_ten
FOREIGN KEY (cot_con1, cot_con2, . cot_con_n)
REFERENCES bang_me (cot_me1, cot_me2, . cot_me_n)
ON DELETE SET NULL;
bang_con
作成する子テーブルの名前。
fk_ten
作成する外部キー制約の名前。
cot_con1、cot_con2 、。 cot_con_n
bang_conの列は、bang_meの主キーを参照したいと考えています。
bang_me
親テーブルの名前には、bang_conで使用される主キーが含まれています。
cot_me1、cot_me2 、。 cot_me_n
bang_meの主キーを構成する列。外部キーは、データと列cot_con1、cot_con2、の間に制約を作成します。 bang_conのcot_con_n。
ON DELETE SET NULL
親テーブルのデータが削除されたときに子データがNULL値に設定されることを指定します。子テーブルのデータは削除されません。
例
ALTER TABLE hangtonkho
ADD CONSTRAINT fk_htk_id_sanpham
FOREIGN KEY (id_sanpham)
REFERENCES sanpham (id_sanpham)
ON DELETE
SET NULL;
この例では、hangtonkhoサブテーブルは、id_sanphamに基づく親テーブルsanphamを参照して、fk_htk_id_sanphamという名前の外部キーを使用して作成されます。
SQLServerにONDELETESET NULLを指定して、親テーブルのid_sanphamデータが削除されると、hangtonkhoサブテーブルの対応するレコードがNULL値に設定されることを理解します。
-
ManagementStudioを使用してMSSQLServerを管理する
SQL Server Management Studioは、インストール時に選択した場合のSQLServerのツールです。このツールは、コマンドラインを使用する代わりに、グラフィカルインターフェイスでSQLServerに接続して管理するのに役立ちます。 リモートSQL Serverインストールに接続するには、このソフトウェアまたは別の同様のソフトウェアも必要です。 Management Studioは、管理者、開発者、テスターによってよく使用されます。 これらは、SQL ServerManagementStudioを開くための一般的な方法です。 方法1: 開く開始すべてのプログラム
-
MicrosoftSQLServerのデータベースでの基本的な操作
みなさん、こんにちは。以前の投稿では、SSMS(SQL Server Management Studio)を介してSQLServerへの接続をインストールして確立しました。 この次の記事では、SQL ServerManagementStudioインターフェイスツールを使用したSQLServerのデータベースでの最も基本的な操作について詳しく説明します。では、始めましょう! #first。新しいデータベースを作成する +ステップ1:まず、SQL Server Management Studioを開き、次にSQLServerに接続します。 (1)–アイテムデータベースを右クリックします。 (