我是SQL的新手,正在尝试更新表(ex_table)的列(ex_counter)。该列由一个计数器组成,该计数器具有ID(ex_id)在第二个表(ex2_table中的ex2_id)上出现的次数。
可以随时将ID插入第二个表中。如果该ID已经存在,则必须更新其在第一张表中对应ID的计数器(我猜只需加1)。
这是两个表:
CREATE TABLE ex_table(
ex_id SMALLINT,
ex_counter SMALLINT;)
CREATE TABLE ex2_table(
ex2_id SMALLINT;)
我认为应该或多或少这样做。注释的代码是我不知道如何实现的伪代码:
CREATE TRIGGER ex_trigger AFTER
INSERT ON ex2_table
FOR EACH ROW EXECUTE PROCEDURE ex_func();
CREATE FUNCTION ex_func() RETURNS trigger AS $$ BEGIN
/*
if ex2_id = ex_id
ex_counter = ex_counter + 1
*/
RETURN NULL;
END;
$$ LANGUAGE plpgsql;
谢谢!
答案 0 :(得分:1)
类似这样的东西
IF EXISTS (SELECT * FROM ex_table WHERE ex_id = new.ex2_id) THEN
UPDATE ex_table
SET ex_counter = ex_counter + 1
WHERE ex_id = new.ex2_id
ELSE
INSERT INTO ex_table VALUES (new.ex2_id, 1)
END IF;
请注意,实际上没有必要存储计数器,因为您可以轻松地通过执行SELECT COUNT()来检索值。