과 충돌합니다. 여기 내 표입니다. 광고, soyad 및 전자 메일을 업데이트 할 수 있지만 전화를 업데이트하려고 할 때 외부 키 [userFk]와 충돌합니다. 이미 캐스케이드에 외래 키가 업데이트되어 있습니다. 여기에서 문제를 파악할 수 없습니다. 사전에 감사합니다.업데이트 문이 외부 키
CREATE TABLE [dbo].[ogrenci] (
[ogrenciNo] INT NOT NULL,
[ad] NVARCHAR (20) NOT NULL,
[soyad] NVARCHAR (20) NOT NULL,
[email] NVARCHAR (50) NOT NULL,
[fakulte_no] INT NOT NULL,
[bolum_ad] NVARCHAR (30) NOT NULL,
[bolum_no] INT DEFAULT ((1)) NOT NULL,
[telefon] NVARCHAR (50) DEFAULT ((1)) NOT NULL,
PRIMARY KEY CLUSTERED ([ogrenciNo] ASC),
UNIQUE NONCLUSTERED ([ogrenciNo] ASC),
UNIQUE NONCLUSTERED ([email] ASC),
CONSTRAINT [bolumFk] FOREIGN KEY ([bolum_no]) REFERENCES [dbo].[bolum] ([bolumNo]) ON DELETE CASCADE,
CONSTRAINT [fakulteFk1] FOREIGN KEY ([fakulte_no]) REFERENCES [dbo].[fakulte] ([fakulteId]) ON DELETE CASCADE,
CONSTRAINT [userFk] FOREIGN KEY ([telefon]) REFERENCES [dbo].[loginusers] ([upassword]) ON DELETE CASCADE ON UPDATE CASCADE
);
및 두번째
,CREATE TABLE [dbo].[loginusers] (
[username] NVARCHAR (50) NOT NULL,
[upassword] NVARCHAR (50) NOT NULL,
PRIMARY KEY CLUSTERED ([upassword] ASC)
); 당신이 update cascade property
로 ogrenci
에 telefon
를 업데이트 할 경우 update ogrenci
쿼리에서 ,[email protected]
코드를 제거해야하므로 열이, 당신의 loginusers
테이블의 기본 키입니다
private void btnUpdate_Click(object sender, EventArgs e)
{
try
{
if (txtOgrenciNo.Text.Length != 0 && txtAd.Text.Length != 0 && txtSoyad.Text.Length != 0 && txtEmail.Text.Length != 0 && txtTelefon.Text.Length != 0)
{
string query = "UPDATE ogrenci SET [email protected],[email protected],[email protected],[email protected],[email protected] WHERE [email protected]";
string query1 = "UPDATE loginusers SET [email protected],[email protected] WHERE [email protected]";
using (connection = new SqlConnection(connectionString))
using (SqlCommand command = new SqlCommand(query, connection))
using (SqlCommand cmd = new SqlCommand(query1, connection))
{
connection.Open();
command.Parameters.AddWithValue("@ogrenciNoVal", txtOgrenciNo.Text);
command.Parameters.AddWithValue("@adVal", txtAd.Text);
command.Parameters.AddWithValue("@soyadVal", txtSoyad.Text);
command.Parameters.AddWithValue("@emailVal", txtEmail.Text);
command.Parameters.AddWithValue("@telefonVal", txtTelefon.Text);
cmd.Parameters.AddWithValue("@emailVal", txtEmail.Text);
cmd.Parameters.AddWithValue("@telefonVal", txtTelefon.Text);
command.ExecuteNonQuery();
cmd.ExecuteNonQuery();
gridDoldur();
}
}
else
{
MessageBox.Show("Öğrenci bilgileri boş girilemez.", "Bilgilendirme", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
당신이'loginusers' 테이블에 논리적 오류가 있다고 생각합니다. 기본 키는'upassword'이고, 암호가 다른 사용자가있을 수 있습니다, 맞습니까? –
loginusers 테이블에서 나는 사용자의 전화 번호를 실제로 userpassword로 만들었습니다. 그래서 모두가 서로 다른 전화 번호를 가지고 있기 때문에, 다른 사용자는 동일한 패스를 가질 수 없습니다. –
알겠습니다. 나는 대답을 게시 할 것입니다. –