我正在努力实现这个目标:
我想在postgres中创建触发器/函数。在插入某行之前,请在某个提示窗口中询问用户某些值。例如,我想这样做:
insert into x (a, b, c) values (aa, bb, '');
默认情况下,值c
应为null,但在插入时,用户可以填充它。因此,在插入一个空值为c
trigger
的行时,会要求用户填写它。
有可能吗?做这个的最好方式是什么? 我在想这样的事情:
CREATE FUNCTION my_trigger_function()
RETURNS trigger AS '
BEGIN
IF NEW.C1 IS NULL OR NEW.C1 = '''' THEN
NEW.C1 := (HERE I WOULD LIKE TO CALL PROMPT WINDOW);
END IF;
RETURN NEW;
END' LANGUAGE 'plpgsql'
CREATE TRIGGER my_trigger
BEFORE INSERT ON T
FOR EACH ROW
EXECUTE PROCEDURE my_trigger_function()
答案 0 :(得分:1)
正如@Vao所说,PostgreSQL触发器没有提示。那么使用custom defined parameters呢?
--Sets a run-time configuration parameter
SELECT set_config('myapp.conf', 'Test', TRUE);
CREATE FUNCTION my_trigger_function()
RETURNS trigger AS $$
BEGIN
--Gets the parameter
NEW.C1 := COALESCE(NULLIF(NEW.C1, ''), current_setting('myapp.conf', FALSE));
RETURN NEW;
END$$ LANGUAGE 'plpgsql';
CREATE TRIGGER my_trigger
BEFORE INSERT ON T
FOR EACH ROW
EXECUTE PROCEDURE my_trigger_function();