일부 행을 삭제 한 후, 내 데이터 어댑터에 업데이트 메서드를 호출 할 때 나는 다음과 같은 오류가 있습니다 참조 제약 조건 "FK_Eleve_Classe"와 충돌ADO.NET 데이터 어댑터
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
sql – kite