我正在创建一个"日志(log)"系统,为此,触发器将是最好的方式,我认为.问题是我有一个标题表(表1)和一个行项目表(表2).我创建了两个新表(Table1log)和(Table2log),它们是非日志(log)表的副本.我希望当我更新头表(Table1)中的一行时,它会将当前行值存储在日志(log)表(Table1log)中,但我还希望将(Table2)中具有相同Header_id的每一行都存储到(Table2log)中.所以我创建了一个BEFORE UPDATE触发器,将更新的行保存到(表1)中的部分正在工作,但是当涉及到保存(表2)行时,它就不工作了.它说我不能从触发器返回结果集,也不能创建视图.
我try 使用普通的SELECT和INSERT,我希望它能起作用,但它返回以下内容
Error 1415: Not allowed to return a result set from a trigger SQL Statement
个
我还试图在触发器内创建一个视图,然后简单地从该视图中获取数据,但它返回了以下内容
Error 1422: Explicit or implicit commit is not allowed in stored function or trigger SQL Statement
个
我try 了所有关于这些话题的话题,但似乎都不是我想要的.
- https://dba.stackexchange.com/questions/317937/triggers-for-multiple-rows-at-once个
- https://dev.mysql.com/doc/refman/8.0/en/create-view.html个
- mysql trigger after update select multiple rows with multiple columns个
- https://forums.mysql.com/read.php?99,656502,656502个
- How to insert multiple records from a trigger in MySQL个
- Database trigger select multiple rows and insert into table个
- MySQL BEFORE INSERT Trigger Select Into Multiple Variables?个
CREATE DEFINER='root'@'%' TRIGGER 'dev'.'table1_BEFORE_UPDATE' BEFORE UPDATE ON "table1" FOR EACH ROW BEGIN INSERT INTO dev.table1log (NumHeader, Name) VALUES (OLD.NumHeader, OLD.Name); SELECT * INTO @table2v FROM dev.table2 WHERE NumHeader = OLD.NumHeader; INSERT INTO dev.table2log (NumHeader, Name) VALUES (@table2v.NumHeader, @table2v.Name); END
我想做这样的事情,有没有人能告诉我应该怎么做?