- - PR -
TableAdapterで、IDENTITYがある2つのテーブルの挿入をしたい。
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2007-01-30 13:23
こんにちは。
開発環境:VS2005, SQL Server2005, C# データソースからドラッグドロップしたリンクされた2つのテーブルで、 IDENTITYを伴った挿入をしたいのです。 Orders(ID,...) IDはIDENTITY (帳票形式) LineItems(ID, OrderID, ...) (表形式) private void INSERT_Click(object sender, EventArgs e) { this.OrdersTableAdapter.Update(this.DataSet1.Orders); this.LineItemsTableAdapter.Update(this.DataSet1.LineItems); } クライアント側で仮採番されたMAX+1番号だとINSERTは成功するのですが、 OrdersのID番号がずれた場合、LineItemsが制約違反で挿入できません。 例)仮採番されたID=100が、他のユーザーがOrdersに新しい一行が挿入し、 削除した場合、Orders.ID = 101となり、 LineItems.OrderID = 100で制約違反が発生します。 普通に登録できる方法があるのでしょうか? |
|
投稿日時: 2007-01-30 15:17
> 例)仮採番されたID=100が、他のユーザーがOrdersに新しい一行が挿入し、
> 削除した場合、Orders.ID = 101となり、 > LineItems.OrderID = 100で制約違反が発生します。 すみません、この例がいまいち理解しづらかったので予想となりますが、 SQL Server側で自動採番するようするか、トランザクション制御を行うことで 解決できそうな気がします。 [ メッセージ編集済み 編集者: よこけん 編集日時 2007-01-30 15:28 ] |
|
投稿日時: 2007-01-31 10:09
よこけんさんへ
ありがとうございます。 SQL Server側で自動採番しているのですが、 子レコードに親レコードのIDが更新されないパターンがあるので、 困ってました。 とりあえず、子レコードのDataGridViewのEnterで、 親レコードをUPDATEしてIDを確定することで逃げました。 ありがとうございました。 |
1