我拿到表所代表的表视图如何写上更新规则微不足道上刚刚给定的更新转发到由视图
CREATE TABLE test (
id SERIAL,
name character varying NOT NULL,
PRIMARY KEY (id)
);
视图
CREATE VIEW TEST_VIEW AS
SELECT id,name
FROM test;
,只是想将给定的更新队列转发到视图后面的实际表格
CREATE RULE TEST_VIEW_UPDATE
AS ON UPDATE TO TEST_VIEW
DO INSTEAD UPDATE TEST;
但是这种方法导致e因为SET语句可能会丢失。我怎样才能以最通用的方式正确执行此操作(因此不限制实际更新的内容)?
但我怎么知道哪些参数是由NEW传递的,因为用户可能只想更新ID? 例如'UPDATE TEST_VIEW SET id = 1000 WHERE name ='bob'' – Sim
所以你可以写'UPDATE TEST set name = NEW.name,col1 = NEW.col1 where id = NEW.id' - 更新所有可以更新的字段。如果用户只更新名称,则NEW.col1将与表中的相同,并且您只需在相同的值 –
上更新它,请在您的评论中添加,我已经接受了您的答案 – Sim