- - PR -
SQL構文の質問です
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-04-05 13:39
すいません。初心者のSQL構文の質問です。
データベースはSQLServer2000です。 AとBテーブルがあります。 Aテーブル ID|DATA| 1 |AA | 2 |BB | 3 |CC | 4 |DD | 5 |EE | 6 |FF | Bテーブル ID|DATA|DATA2 1 |AA |aa| 2 |BB |bb| 3 |CC |cc| 4 |DD |dd| AテーブルからBテーブルにIDが5,6のデータを追加 AテーブルMASTERで更新されたデータをBテーブルのIDとDATA列に追加したいのですが うまくいきません。 あと逆にAテーブルMASTERで削除されたデータをBテーブルでも削除したいのです。 すいませんが教えてください。 | ||||
|
投稿日時: 2007-04-05 13:47
トリガを使えば楽だと思いますよ。
| ||||
|
投稿日時: 2007-04-05 13:58
Bテーブルを正規化して、かめたろさんが仰るようにトリガー を使うのが現実的です。 なお、Aテーブルで削除されたデータに該当するBテーブルの データ削除は、FOREIGNキーとCASCADE句で行えます。 # SQL ServerにFOREIGNキーとCASCADE句の概念はありますよね。 | ||||
|
投稿日時: 2007-04-05 14:20
SQLの書き方という点では、下のようになるかと思います。
1. 追加 ============================================ INSERT INTO Bテーブル ( id, data ) SELECT id, data FROM Aテーブル WHERE NOT EXISTS ( SELECT ID FROM Bテーブル WHERE Bテーブル.ID = Aテーブル.ID ) 2. 更新 ============================================ UPDATE Bテーブル SET DATA = Aテーブル.DATA FROM Bテーブル INNER JOIN Aテーブル ON Bテーブル.ID = Aテーブル.ID WHERE Bテーブル.DATA != Aテーブル.DATA 3. 削除 ============================================ DELETE FROM Bテーブル WHERE NOT EXISTS ( SELECT ID FROM Aテーブル WHERE Aテーブル.ID = Bテーブル.ID ) |
1