ここに私のテーブルがあります。私は広告、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
));
2つ目、
CREATE TABLE [dbo].[loginusers] (
[username] NVARCHAR (50) NOT NULL,
[upassword] NVARCHAR (50) NOT NULL,
PRIMARY KEY CLUSTERED ([upassword] ASC)
)。ここ
とは、更新ボタンで、あなたはupdate cascade property
でogrenci
にtelefon
を更新したい場合は
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だから誰もが異なる電話番号を持っているので、異なるユーザーは同じパスを持つことはできません。 –
私はそれを得ました、私は答えを投稿します –