Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.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
使用规则在插入时更新sql中的值;与老年人有问题_Sql_Psql_Rule - Fatal编程技术网

使用规则在插入时更新sql中的值;与老年人有问题

使用规则在插入时更新sql中的值;与老年人有问题,sql,psql,rule,Sql,Psql,Rule,当我有一张像 AccNum Location 76 North 87 West 92 South 然后说我想再插入76,但我只能在其中插入一次,这样在插入(76,East)时,我希望我的表看起来像这样 AccNum Location 76 East 87 West 92 South 这是我的密码 CREATE RULE ChangeValue AS ON INSERT TO ItemLoc

当我有一张像

AccNum     Location
76         North
87         West
92         South
然后说我想再插入76,但我只能在其中插入一次,这样在插入(76,East)时,我希望我的表看起来像这样

AccNum    Location
76        East
87        West
92        South
这是我的密码

CREATE RULE ChangeValue AS ON INSERT TO ItemLocations
     WHERE OLD.AccNum = NEW.AccNum
        DO INSTEAD
                UPDATE ItemLocations
                SET
                        Loc = NEW.Loc
                WHERE
                        AccNum = NEW.AccNum
;
但我现在正在

There is an entry for table "old", but it cannot be referenced from this part of the query.

谢谢你

在95级Postgres+中,你可以在冲突中使用

insert into t(AccNum, Location)
    select 76, 'East'
    on conflict do update set Location = 'East';
或:


在Postgres 95.+中,您可以对冲突使用

insert into t(AccNum, Location)
    select 76, 'East'
    on conflict do update set Location = 'East';
或:


好的,谢谢,我实际上是在试图找出我的规则在一般情况下的错误。在这个问题上,我似乎无法正确理解我的规则。好的,谢谢,我实际上是在试图找出我的规则在一般情况下的错误。在这个问题上,我似乎无法正确理解我的规则