我有两个具有相同架构的表,并且两者的主键都是 noc,
每当在表 1 中进行插入时,必须在表 2 中检查其 noc,如果存在则必须比较完整行,如果有任何差异,则必须引发异常。如果 noc 在 TABLE2 中不存在,则必须遵循简单的插入
这是我的触发功能
CREATE OR REPLACE FUNCTION ac_val()
RETURNS trigger AS
$BODY$
BEGIN
IF NEW.acop IS NULL THEN
INSERT INTO exception_detail( noc,exception)
VALUES (new.noc,'number cannot be empty');
END IF;
RETURN NEW;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
这是我的触发器
CREATE TRIGGER acut_val
AFTER INSERT OR UPDATE
ON acut
FOR EACH ROW
EXECUTE PROCEDURE ac_val();
这对于一个表来说是完全可以的,但是现在根据每个插入的要求,它必须检查 noc 是否存在于其他表 TABLE2 中,如果存在则必须进行比较,否则插入
我想我不能对每个插入执行检查,因为要插入 acuit 的数据是从 csv 复制的,这需要从 csv 复制,如果我复制它会给出错误,你必须是超级用户,但如果我从控制台复制就可以了。那么我可以在 acuit 中复制数据后执行类似的操作,逐行检查
SELECT q1.* FROM acut q1
INNER JOIN TABLE2 q2 ON (q1.noc = q2.noc);
它将给出存在于 TABLE2 中的 acut 记录
接着
foreach row of above output{
if (q1.name != q2.name)
Do something ;
if (q2.address < q1.address)
Do something ;
}