gpt4 book ai didi

sql - 错误 : syntax error at or near "INSERT" , SQL 触发器,协议(protocol)表

转载 作者:行者123 更新时间:2023-11-29 13:52:45 26 4
gpt4 key购买 nike

我正在尝试创建一个触发器来将我删除的行保存到一个单独的表中,但我经常遇到错误。我正在使用 postgresSQL(终端)。

这是原始表格的样子:

CREATE TABLE person_Lives_there 
(
pId BIGINT NOT NULL,
cityId BIGINT NOT NULL
);

还有我的协议(protocol)表

CREATE TABLE Protocol
(
pId BIGINT NOT NULL,
cityId BIGINT NOT NULL,
deletedOn TIMESTAMP
);

现在,我的触发器应该看起来像这样,但它经常给我错误,现在:

ERROR: syntax error at or near "INSERT"

代码:

CREATE TRIGGER deletion
AFTER DELETE
ON person_Lives_there
FOR EACH ROW
INSERT INTO Protocol (pId, cityId, deletedOn)
VALUES (old.pId, old.cityId, current_date());

我也已经尝试过使用触发器和函数,但这会导致函数不断出现错误消息。

感谢您的帮助。

最佳答案

PostgreSQL 只允许过程触发器。不支持 SQL 语句触发器。

CREATE OR REPLACE FUNCTION person_Lives_there_delete_trg_fx()
RETURNS trigger AS $$
BEGIN
INSERT INTO Protocol
VALUES(old.PId, old.cityId, current_date());
RETURN NULL;
END;
$$ LANGUAGE plpgsql;

CREATE TRIGGER person_Lives_there_delete_trg
AFTER DELETE ON person_Lives_there
FOR EACH ROW
EXECUTE PROCEDURE person_Lives_there_fx();

关于sql - 错误 : syntax error at or near "INSERT" , SQL 触发器,协议(protocol)表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37824261/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com