私はいくつかの行を削除した後、次のエラーがあります。ADO.NETのDataAdapter
REFERENCE制約「FK_Eleve_Classe」と競合DELETEステートメント。競合はデータベース "hogwarts"、テーブル "dbo.Eleve"、列 'FK_classID'で発生しました。 ステートメントが終了しました。
実際には、外部キーが定義されていますが、プライマリキーが "classe"テーブルにあるため、なぜ "eleve"の行を削除できないのですか?
多分カスケードで削除しようとしますか? (?そして、これを変更する方法)
編集1:SQL
CREATE TABLE [dbo].[Classe](
[id] [int] NOT NULL,
CONSTRAINT [PK_Classe] PRIMARY KEY CLUSTERED
(
[id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
CREATE TABLE [dbo].[Eleve](
[id] [int] NOT NULL,
[nom] [varchar](50) NULL,
[prenom] [varchar](50) NULL,
[birthdate] [date] NULL,
[FK_classID] [int] NULL,
CONSTRAINT [PK_Eleve] PRIMARY KEY CLUSTERED
(
[id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
ALTER TABLE [dbo].[Eleve] WITH CHECK ADD CONSTRAINT [FK_Eleve_Classe] FOREIGN KEY([FK_classID])
REFERENCES [dbo].[Classe] ([id])
編集2:いくつかのC#コード
DataSet ds = new DataSet();
c.Open(); // SqlConnection
SqlDataAdapter da = new SqlDataAdapter("Select * from eleve", (SqlConnection)c);
da.Fill(ds, "eleves");
da.SelectCommand = new SqlCommand("select * from cours", (SqlConnection)c);
da.Fill(ds, "COURS");
da.SelectCommand = new SqlCommand("select * from professeur", (SqlConnection)c);
da.Fill(ds, "PROF");
da.SelectCommand = new SqlCommand("select * from classe", (SqlConnection)c);
da.Fill(ds, "CLASSE");
c.Close();
ds.Tables["eleves"].Rows[0].Delete();
編集3:削除
ここに私のテーブルの私の要素を削除する方法です:
ds.Tables["eleves"].Rows[0].Delete();
これに加えてdeleteCommandを手動で設定する必要がありますか?
と私はそれを面白い方法を説明するためのサンプルを作ってるんだので、はい、ホグワーツ;)
おかげで、
凧
'hogwarts'データベース、lol – hunter
あなたはあなたのSQLを投稿できますか? – hunter
sig – kite