Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.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
Database 使用触发器函数时,新插入的项在插入时为空_Database_Postgresql_Triggers - Fatal编程技术网

Database 使用触发器函数时,新插入的项在插入时为空

Database 使用触发器函数时,新插入的项在插入时为空,database,postgresql,triggers,Database,Postgresql,Triggers,当使用外键asset_id在另一个表中进行插入时,我试图更新名为asset的表中的时间戳。。。在psuedo代码中,我的意思是: 在插入表B时 更新资产集上次更新=现在() 其中asset.asset\u id=B.asset\u id 下面是我尝试使用的Postgres脚本: CREATE OR REPLACE FUNCTION update_asset () RETURNS trigger LANGUAGE PLPGSQL AS $plpgsql$ BEGIN IF NEW is NUL

当使用外键asset_id在另一个表中进行插入时,我试图更新名为asset的表中的时间戳。。。在psuedo代码中,我的意思是:

在插入表B时

更新资产集上次更新=现在()

其中asset.asset\u id=B.asset\u id

下面是我尝试使用的Postgres脚本:

CREATE OR REPLACE FUNCTION update_asset () RETURNS trigger
LANGUAGE PLPGSQL
AS $plpgsql$
BEGIN
  IF NEW is NULL THEN RAISE EXCEPTION 'entry is null';
  end IF;
  UPDATE asset
  SET last_updated_timestamp = NOW()
  WHERE asset_id = NEW.asset_id;
END;
$plpgsql$;

CREATE TRIGGER table_b_update_trigger
BEFORE  INSERT OR UPDATE ON table_b
EXECUTE PROCEDURE update_asset();

我面临的问题是NEW总是空的。有人知道我哪里出错了吗?

对每行使用
对于每一行,执行过程更新_asset()

NEW对于语句级触发器为NULL