问题描述
我是新手,我想了解: 我知道New仅通过Insert或Update执行。 那些旧的只有删除“如果我没记错的话”。
我想做的是推导“如果2个值相同但不同的数字”,我将其插入表中并保留默认的false值,但是我做了,但是“我插入”了新数据,但应为“驱动程序”的值“ OLD”。
?可以满足该请求吗?
触发器:
CREATE FUNCTION TR_DRIVER() RETURNS TRIGGER
AS
$$
BEGIN
IF EXISTS(SELECT number_driver,cod_driver
FROM driver AS con
WHERE EXISTS (SELECT * FROM driver_tmp AS tmp
WHERE con.number_driver<>tmp.number_driver AND con.cod_driver=tmp.cod_driver)) THEN
INSERT INTO driver_false(number_driver,cod_driver,full_name)
VALUES (new.number_driver,new.cod_driver,new.full_name);
ELSE
INSERT INTO driver(number_driver,full_name,active)
VALUES (new.number_driver,new.full_name,new.active)
ON CONFLICT (number_driver)
DO UPDATE SET
cod_driver=excluded.cod_driver,full_name=excluded.full_name,active=excluded.active;
END IF;
RETURN NEW;
END $$
LANGUAGE plpgsql;
CREATE TRIGGER TR_DRIVER_TMP AFTER INSERT OR UPDATE ON driver_tmp
FOR EACH ROW
EXECUTE PROCEDURE TR_DRIVER() ;
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)