2016-05-20 34 views
0

の外部キー制約もトリガーもないを持つSQL Server 2008のテーブルから行を削除しようとしています。メッセージセクションをチェックすると、影響を受ける行が表示されますが、表をチェックすると、行はまだ存在します。参照用の画像が添付されています。私はこの表に制約がないことを非常に確信しています。何が問題なの?外部キー制約のないテーブルの行を削除できません

enter image description here

+0

...、これらの潜在的なトリガー操作のすべてのためのrows affectedメッセージが表示されない場合があります。 – PyNoob

+0

という制約を指定してください(画像が表示されない、srry)同じテーブルから削除して選択してもよろしいですか? (同じデータベース/同じスキーマ) – mxix

+0

プライマリ/外部キーまたはデフォルトの制約。 – whywake

答えて

0

あなたは、constrintsを照会するためのキーをsysのテーブルを使用することができ、などこれらの結果に基づいて、あなたはあなたのテーブルから削除することができます。テーブル制約を返すサンプルクエリについては、以下を参照してください。

SELECT 
    TableName = t.Name, 
    ColumnName = c.Name, 
    dc.type, 
    dc.type_desc, 
    dc.name, 
    dc.definition 
FROM sys.tables t 
INNER JOIN sys.default_constraints dc ON t.object_id = dc.parent_object_id 
INNER JOIN sys.columns c ON dc.parent_object_id = c.object_id AND c.column_id = dc.parent_column_id 
where t.name = 'yourtablename' 
ORDER BY t.Name 
0

本当に何のトリガーは、あなたから削除(および、それらのテーブルに順番に、すべてのFKSしているテーブルにFKSを持っているすべてのリンクテーブルを調べて、あなたから削除しているテーブルの上に存在しない場合)。 FKにはON DELETE CASCADEが設定されています。これにより、削除が実際に機能します(エラーをスローするのではなく)。これらのFKを持つテーブルのいずれかのトリガーがただちに行を再追加できます。

トリガーは任意のDMLを実行する前にSET NOCOUNT ONを設定することができますので、あなたは、必ずしもあなたが参照しているかの制約

関連する問題