3

CategoriesId, ParentId(任意のレベルのネストを持つことができる「サブカテゴリ」用)とその他のテーブルがあります。SQL Server 2012 を使用して、同じテーブルに外部キーを作成できませんFK_Categories_Categories( Id -> ParentId)。

エラーメッセージは

'Categories' テーブル
- リレーションシップ 'FK_Categories_Categories' を作成できません。ALTER TABLE ステートメントは、FOREIGN KEY SAME TABLE 制約 "FK_Categories_Categories" と競合しました。データベース「pokupaykadb」、テーブル「dbo.Categories」、列「Id」で競合が発生しました。

サブカテゴリのカスケード削除が必要です。どのような解決策が考えられますか? 外部キーによる別のテーブルからのカスケード削除のように、いくつかのプロパティであることが望ましい

http://i.stack.imgur.com/kXiMS.png

4

2 に答える 2

4

制約基準を満たさない孤立したレコードがある場合は、外部キーを作成する前にそれらを削除してください。

通常、新しい制約に従わず、DBMS が制約の作成を許可しないレコードはほとんどありません。

于 2013-06-07T14:59:52.070 に答える
0

孤立した値の場合、最初に発生したエラー ラベルに、孤立した値が示されます。

どのコードを実行しようとしたかを確認することは、確かに役に立ちます。以下は有効なテーブル定義です。

CREATE TABLE dbo.Categories
(
    Id int NOT NULL IDENTITY(-2147483648, 1)
        CONSTRAINT PK_Categories PRIMARY KEY
    , ParentId int NOT NULL
        CONSTRAINT FK_Categories_ParentId
        FOREIGN KEY (ParentId) REFERENCES dbo.Categories
)
于 2013-06-07T14:59:59.477 に答える