ON UPDATE SET DEFAULTを使用して参照整合性のための例を実装しようとしましたが、エラーが発生しました。これについて検索しようとしましたが、私のコードのどこかで間違っている場合や、SET DEFAULTオプションを実装して理解するのに役立つ例を挙げてください。参照整合性を実装中にON UPDATE SET DEFAULTを使用するとエラーが発生する
0
A
答えて
0
デフォルト値は、参照テーブルに存在する必要があります。それは依然として外部キーであり、参照整合性が必要です。 tblPerson1
が正常に4
のデフォルトに更新できるように、あなたの例では
は、あなたは、7
にtblGender.Id
6
を更新する前4
のtblGender.Id
を持っている必要があります。例えば
:
create table Themes (
ThemeID int primary key,
ThemeName varchar(100),
);
insert into Themes (ThemeID, ThemeName) values (1,'Default'),(2,'Winter');
create table Users(
UserID int primary key,
UserName varchar(100),
ThemeID int default 1 constraint Users_ThemeID_FK
/* if the default doesn't exist in the parent table
, you will get an error on update --*/
references Themes(ThemeID)
on update set default
on delete set default
);
insert into Users(UserID, UserName, ThemeID) values
(1,'JSmith',null),(2,'Ted',1),(3,'ARod',2)
-- update a theme that isn't the default
update themes set themeid = 3 where ThemeID = 2
-- And let's see what we've got:
select * from Users
-- Try to update the default and you will get an error
--update themes set themeid = 3 where ThemeID = 1
rextester デモ:http://rextester.com/NGYBS91102
参考:
Using set null
and set default
with Foreign Key Constraints - Jeff Smith
+0
ありがとうSqlZim。私は同じものを探しています –
0
私はあなたが4のマッチングのIDを持っていないので、これがあると思います(デフォルト値)をGenderテーブルに追加します。
あなたは、この追加した場合:
insert tblGender values (4, 'abc')
を次に更新ステートメントはエラーなしで実行されます。
エラーは何ですか?関係するテーブルと外部キーのddlをポストするのはどうですか?これらの詳細がなければ私たちは手助けできません。 –
ハイパーリンク「コードスクリプト」をクリックします。あなたはすべてを知るようになるでしょう –