c# - 使用触发器更改数据库中的记录

标签 c# database sqlite triggers

这基本上就是我的数据库的样子

ID | descendant | father | mother
---------------------------------
1       X            Y       Z
2       Y            A       B

字母X,Y,Z,A,B代表一些代码或数字

例如,如果我在第 1 行 (ID=1) 中将代码 Y 更改为 R,如果我在第 2 行中自动将 Y 更改为 R,我想将代码 Y 的每个字段更改为代码 R,反之亦然将在第 1 行将 Y 更改为 R

最重要的是,如果某些代码更改为另一个代码,例如我将 Y 更改为 R 或 G 等等,数据库中具有代码 Y 的每条记录都应更改为 R 或 G。

我可以用触发器来做到这一点吗?或者可以使用其他什么方式。 (我的用户可以通过我的 C# 应用程序更改记录)

最佳答案

使用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 列是唯一的,则不需要更新它。)

关于c# - 使用触发器更改数据库中的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13636463/

相关文章:

database - 如何使用 dbExpress 和 Delphi(也可能是 DataSnap)来抽象我的业务模型?

mysql - 如何更新 mysql 查询中的列

c# - UWP - 检查表是否存在

java - Android 中的 SQLite : Foreign Keys and <table constraint> expected

c# - HttpModule 向请求添加 header

c# - 将字符串转换为 DateTimeOffset 的最佳方法?

database - 如何从现有数据库实际构建数据仓库?

Android:cursor.getCount()

c# - 为什么 C# 在这种情况下使用相同的内存地址?

c# - 如何在键入 NSSearchField 时延迟搜索