PostgreSQL上的触发器
我需要一些帮助。我是SQL新手,当我在PostgreSQL上的触发器,sql,postgresql,stored-procedures,triggers,Sql,Postgresql,Stored Procedures,Triggers,我需要一些帮助。我是SQL新手,当我在Peop表中使用INSERT withsex='F'时,我想要的一切都是更新列(est)的触发器。可能吗? 我的数据库管理系统是PostgreSQL 我已经试过这个代码,但是不对。我得到了这个提示:如果你想放弃SELECT的结果,就用PERFORM代替 CREATE FUNCTION tEst() RETURNS TRIGGER AS $$ BEGIN SELECT * FROM Peop; IF Peop.est = 'A'
Peop
表中使用INSERT withsex='F'
时,我想要的一切都是更新列(est
)的触发器。可能吗?
我的数据库管理系统是PostgreSQL
我已经试过这个代码,但是不对。我得到了这个提示:如果你想放弃SELECT的结果,就用PERFORM代替
CREATE FUNCTION tEst() RETURNS TRIGGER AS $$
BEGIN
SELECT * FROM Peop;
IF Peop.est = 'A' AND Peop.sex = 'F' THEN
UPDATE Peop SET est = 'B';
END IF;
RETURN NULL;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER myTrigger AFTER INSERT ON Peop
FOR EACH ROW
EXECUTE PROCEDURE tEst();
INSERT INTO Peop (name, sex) VALUES ('Mary', 'F');
默认情况下,est
列具有'A'
值。
提前谢谢 这是一项简单的任务,但您应该在插入或更新行触发器之前使用
。有可能
- 获取相关(插入、更新、删除)行中的数据信息
- 修改将存储在表中的数据
你的例子是:
CREATE FUNCTION tEst() RETURNS TRIGGER AS $$
BEGIN
IF NEW.est = 'A' AND NEW.sex = 'F' THEN
NEW.est = 'B';
END IF;
RETURN NEW;
END;
CREATE TRIGGER tEst_trg BEFORE INSERT OR UPDATE ON peop
FOR EACH ROW EXECUTE PROCEDURE tEst();
您可以在中看到更多示例