这基本上就是我的数据库的样子
ID | descendant | father | mother --------------------------------- 1 X Y Z 2 Y A B
字母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#应用程序更改记录)
答案 0 :(得分:1)
像这样使用triggers,每个字段一个:
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
列是唯一的,则无需更新。)
答案 1 :(得分:0)
在此基表上触发,您可能会发生变异。这可能由另一个带有映射的表控制。
与此类似:
map_table
-------------
original_val
new_val
然后你将X填充为原始,将R填入新的,然后就可以使用此插入来修复原始表。