2017-03-22 9 views
0

ON UPDATE SET DEFAULTを使用して参照整合性のための例を実装しようとしましたが、エラーが発生しました。これについて検索しようとしましたが、私のコードのどこかで間違っている場合や、SET DEFAULTオプションを実装して理解するのに役立つ例を挙げてください。参照整合性を実装中にON UPDATE SET DEFAULTを使用するとエラーが発生する

code script

+2

エラーは何ですか?関係するテーブルと外部キーのddlをポストするのはどうですか?これらの詳細がなければ私たちは手助けできません。 –

+0

ハイパーリンク「コードスクリプト」をクリックします。あなたはすべてを知るようになるでしょう –

答えて

0

デフォルト値は、参照テーブルに存在する必要があります。それは依然として外部キーであり、参照整合性が必要です。 tblPerson1が正常に4のデフォルトに更新できるように、あなたの例では

は、あなたは、7tblGender.Id6を更新する前4tblGender.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') 

を次に更新ステートメントはエラーなしで実行されます。