1

データを datagridviews に書き込んでいるプログラムがあり、フォーム データを閉じると SQL Server データベースに保存されます。しかし、子行がある場合に親行を削除する際に問題があります。同時実行違反の例外が発生しています。データベースを確認すると、子行のみが削除されていることがわかります。

SQL Server テーブルを作成するためのクエリは次のとおりです。

sql = "CREATE TABLE Auto("
                        + "VIN varchar(10) NOT NULL PRIMARY KEY,"
                        + "Make nvarchar(50),"
                        + "Model nvarchar(50),"
                        + "Year smallint);";

sql = "CREATE TABLE Repair("
                        + "ID int NOT NULL PRIMARY KEY,"
                        + "VIN varchar(10) NOT NULL,"
                        + "Description nvarchar(255),"
                        + "Cost float)"
                        + "ALTER TABLE Repair ADD FOREIGN KEY (VIN) REFERENCES Auto(VIN) ON DELETE CASCADE;";

経由でデータベースを更新していますSqlDataAdapter

4

2 に答える 2

0

それは私のために働きます、ここにフィドルがあります

SQLフィドル

ひょっとしてきっかけはありますか?

于 2013-10-26T14:05:50.783 に答える
-1

ALTER TABLE を使用する理由がわかりません。このようなことを試してみてください。私にとってはうまくいきます。

CREATE TABLE Auto(
VIN varchar(10) NOT NULL PRIMARY KEY,
Make nvarchar(50),
Model nvarchar(50),
Year smallint
);

CREATE TABLE Repair(
ID int NOT NULL PRIMARY KEY,
VIN varchar(10) NOT NULL,
Description nvarchar(255),
Cost float,
FOREIGN KEY (VIN) REFERENCES Auto(VIN) ON DELETE CASCADE)
);

削除の例:

DELETE FROM Auto WHERE VIN = 'BMW';
于 2013-10-26T13:58:26.293 に答える