小编Geo*_*rge的帖子

触发| 如何删除行而不是根据单元格值更新

PostgreSQL 10/11。
如果目标单元格值为 ,我需要删除行而不是更新null

所以我创建了这个触发函数:

CREATE OR REPLACE FUNCTION delete_on_update_related_table() RETURNS trigger
AS $$
    DECLARE
        refColumnName text = TG_ARGV[0];
    BEGIN
        IF TG_NARGS <> 1 THEN
            RAISE EXCEPTION 'Trigger function expects 1 parameters, but got %', TG_NARGS;
        END IF;
        EXECUTE 'DELETE FROM ' || TG_TABLE_NAME || ' WHERE $1 = ''$2'''
        USING refColumnName, OLD.id;
        RETURN NULL;
    END;
$$ LANGUAGE plpgsql;
Run Code Online (Sandbox Code Playgroud)

还有一个BEFORE UPDATE触发器:

CREATE OR REPLACE FUNCTION delete_on_update_related_table() RETURNS trigger
AS $$
    DECLARE
        refColumnName text = TG_ARGV[0];
    BEGIN …
Run Code Online (Sandbox Code Playgroud)

postgresql triggers plpgsql

4
推荐指数
1
解决办法
3032
查看次数

标签 统计

plpgsql ×1

postgresql ×1

triggers ×1