Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql postgres触发传递输入到函数_Postgresql - Fatal编程技术网

Postgresql postgres触发传递输入到函数

Postgresql postgres触发传递输入到函数,postgresql,Postgresql,我试图做一个触发器,当一个值被放入表1时,它会被复制到表2中。我有以下功能,可以正常工作: Create function func1(a integer) returns void Language SQL as $$ insert into table2 values (a);$$; 这是触发器(它不起作用): 我正在努力遵循文档。以下是我要特别介绍的部分: CREATE TRIGGER log_update AFTER UPDATE ON accounts FOR EAC

我试图做一个触发器,当一个值被放入表1时,它会被复制到表2中。我有以下功能,可以正常工作:

Create function func1(a integer) returns void
Language SQL as $$
insert into table2 values (a);$$;
这是触发器(它不起作用):

我正在努力遵循文档。以下是我要特别介绍的部分:

CREATE TRIGGER log_update
    AFTER UPDATE ON accounts
    FOR EACH ROW
    WHEN (OLD.* IS DISTINCT FROM NEW.*)
    EXECUTE PROCEDURE log_account_update();
我认为old.attribute在更改旧行之前提供了旧行的特定属性。如果我错了,请告诉我。谢谢

对触发器中调用的函数作了如下说明:

用户提供的函数,声明为不带参数和 返回类型触发器,在触发器触发时执行

此功能可以访问
旧的
新的
对象。您可以修改现有功能:

Create function func1()返回触发器
作为$$
开始
在表2中插入值(旧的属性1);
归还新的;
结束;
$$语言plpgsql;
创建触发器trig1
在更新表1之前
每行
执行函数func1();

当我尝试按照您的描述创建Function func1时,我遇到了一个错误:“SQL函数无法返回类型触发器”
CREATE TRIGGER log_update
    AFTER UPDATE ON accounts
    FOR EACH ROW
    WHEN (OLD.* IS DISTINCT FROM NEW.*)
    EXECUTE PROCEDURE log_account_update();