DBCC CHECKCONSTRAINTSを使用する代わりに、再度制約を有効にする場合は、WITH CHECK
オプションを使用してください。
ALTER TABLE YourTable WITH CHECK CHECK CONSTRAINT YourConstraint;
違反がある場合は、次のようなエラーが出るでしょう:
Msg 547, Level 16, State 0, Line 15
The ALTER TABLE statement conflicted with the FOREIGN KEY constraint "YourConstraint". The conflict occurred in database "YourDatabase", table "YourTable", column 'YourColumn'.
は簡単なデモについては、以下のサンプルコードを使用してください。
use tempdb
go
create table a (
id int primary key
)
create table b (
id int
)
alter table b add constraint x foreign key (id) references a(id)
alter table b nocheck constraint x
insert into b (id) values (1)
alter table b with check check constraint x
go
drop table b
drop table a
go
私はそれを得ていません。制約を無効にして手動で手動でチェックしようとするのはなぜですか?そのエラーを有効にしてCATCH/ROLLBACKのままにしておきます。 –
私はSP内の制約を破るいくつかのデータ操作を行うので。 SPが終了したら、すべてOKになります。 – Evgenyt
私はすべての細部を除いて確実に言うことはできませんが、間違った順序で操作を行う場合のように聞こえます。 –