2

これは基本的に私のデータベースがどのように見えるかです

ID | 子孫| 父| 母親
---------------------------------
1 XYZ
2 YAB

文字X、Y、Z、A、Bは、コードまたは数字を表します

たとえば、1行目(ID = 1)でコードYをRに変更した場合、コードYがあるすべてのフィールドをコードRに変更したい、またはその逆の場合、2行目でYをRに変更すると、自動的に変更されます1行目のYからR

最も重要なことは、あるコードが別のコードに変更された場合、たとえばYをRまたはGに変更した場合、コードYを持つデータベース内のすべてのレコードをRまたはGに変更する必要があります。

トリガーでそれを行うことができますか?または、他にどのような方法を使用できますか。(私のユーザーは私のC#アプリケーションを介してレコードを変更することができます)

4

2 に答える 2

1

フィールドごとに1つずつ、次のようなトリガーを使用します。

CREATE TRIGGER update_descendant
AFTER UPDATE OF descendant ON MyTable
BEGIN
    UPDATE MyTable SET descendant = NEW.descendant WHERE descendant = OLD.descendant;
    UPDATE MyTable SET father     = NEW.descendant WHERE father     = OLD.descendant;
    UPDATE MyTable SET mother     = NEW.descendant WHERE mother     = OLD.descendant;
END;

descendant列が一意である場合は、更新する必要はありません。)

于 2012-11-30T11:22:31.333 に答える
0

このベーステーブルにトリガーを設定すると、ミューテーションが発生する可能性があります。これは、マッピングを使用して別のテーブルによって制御できます。

これに似ています:

map_table
-------------
original_val
new_val

次に、Xを元の値として、Rを新しいものとして入力すると、この挿入を使用して元のテーブルを修正することができます。

于 2012-11-29T23:20:28.067 に答える