我有许多用 PL/pgSQL 编写的触发函数,它们遵循以下逻辑:
SELECT my_name
INTO l_my_name
FROM data
WHERE data.my_number = NEW.test_num;
IF NOT FOUND THEN
INSERT INTO test_event
VALUES (NEW.test_num, NULL, NEW.event_one, NEW.event_two);
ELSE
INSERT INTO test_event
VALUES (NEW.test_num, l_my_name, NEW.event_one, NEW.event_two);
END IF;
一些插入具有超过 15 个以上的值,我试图将它们简化为仅 1 个插入,因为上面的代码一遍又一遍地重复存储过程中的不同检查,不必要地使过程有数百行代码长。我的想法是这样的:
INSERT INTO test_event
VALUES (NEW.test_num, NULLIF(l_my_name,''), NEW.event_one, NEW.event_two);
我不确定如果没有找到它是否l_my_name
会正常工作,或者我是否必须做一些不同的事情。''
NULLIF