2016-05-10 8 views
0

よしを追加するので、私はこの2つのテーブルに接続するために管理:SQLは、接続されている行を削除し、同じ値に

CREATE TABLE [dbo].[T_Artikli] (
[ArtikliId] INT   IDENTITY (1, 1) NOT NULL, 
[Naziv]  NVARCHAR (100) NOT NULL, 
[Sifra]  VARCHAR (13) NOT NULL, 
[Vp]  FLOAT (53)  NOT NULL, 
[MP]  FLOAT (53)  NOT NULL, 
[Napomena] NVARCHAR (300) NOT NULL, 
PRIMARY KEY CLUSTERED ([ArtikliId] ASC) 
); 

CREATE TABLE [dbo].[T_Stanje] (
[StanjeId] INT   IDENTITY (1, 1) NOT NULL, 
[Trenutno] INT   NOT NULL, 
[Naruceno] INT   NOT NULL, 
[Datum] DATE   NOT NULL, 
[Firma] NVARCHAR (40) NOT NULL, 
[ArtiklId] INT   NOT NULL, 
PRIMARY KEY CLUSTERED ([StanjeId] ASC), 
CONSTRAINT [FK_T_Stanje_T_Artikli] FOREIGN KEY ([StanjeId]) REFERENCES [dbo].[T_Artikli] ([ArtikliId]) 
); 

をそして、それは魔法のように動作します。それはこれらのテーブルの行の1つを削除することになると私はやったこと、このような単純な:Stanjeテーブル

を削除

string deleteSql = 
      "DELETE FROM T_Stanje WHERE ArtiklId = @Id " + 
      "DELETE FROM T_Artikli WHERE ArtikliId = @Id;"; 

とする場合:

削除Artiklテーブルは、(D ArtiklIdとArtikliIdはタイプミスではありません)

string deleteSql = 
      "DELETE FROM T_Stanje WHERE StanjeId = @Id;"; 

これらはまた、ArtikliとStanjeに値を追加してからそのStanje行を削除すると、同じArtikliに新しいStanjeを追加できません。 Error:

答えて

1

まずする必要があり、あなたが自動的に生成されたIDを使用していると思います。同じ行を作成することはできません。

第二に、あなたは私が

+0

うんを信じて間違った外部キーを参照しますが、それもArtikli.ID = 1とStanje.ArtiklId = 5をcouln't? IDは必ずしも同じ値である必要はありません。 – Morsus

+0

これは問題がクエリにあったことを修正しました。しかし、今私は別の問題があります。私は同じ 'Artikli'のために忠実な 'Stanje'を追加することができます。私はUNIQUEパラメータを 'Stanje.ArtiklId'に追加しましたが、プログラムは正しく実行され、重複が作成されます... – Morsus

+0

あなたのユニークな制約を表示できますか? – gayan1991

1

問題は、あなたの外部キーが間違っている、ここで

CONSTRAINT [FK_T_Stanje_T_Artikli] 
FOREIGN KEY ([StanjeId]) 
REFERENCES [dbo].[T_Artikli] ([ArtikliId]) 

です。それは次のようになります。

CONSTRAINT [FK_T_Stanje_T_Artikli] 
FOREIGN KEY ([ArtiklId]) 
REFERENCES [dbo].[T_Artikli] ([ArtikliId]) 
1

私は

CONSTRAINT [FK_T_Stanje_T_Artikli] 
FOREIGN KEY ([StanjeId]) 
REFERENCES [dbo].[T_Artikli] ([ArtikliId]) 

は、すべての

CONSTRAINT [FK_T_Stanje_T_Artikli] 
FOREIGN KEY ([ArtiklId]) 
REFERENCES [dbo].[T_Artikli] ([ArtikliId]) 
関連する問題