PostgreSQL函数添加带可选参数的记录

时间:2016-08-19 20:19:10

标签: sql postgresql sql-update sql-insert sql-function

我想知道我所做的是使用可选参数向记录添加记录的正确方法,特别是我想知道如何改进“IF”中的代码。

我正在使用postgreSQL。

CREATE OR REPLACE FUNCTION add_record(_ID_Father_table VARCHAR(10), _ID_Son_table VARCHAR(10), _Optional1 VARCHAR(50) DEFAULT ' ', _Optional2 INTEGER DEFAULT -1) 
RETURNS void AS $$
BEGIN
    INSERT INTO Father_Table(ID_Father) VALUES (_ID_Father_Table);
    INSERT INTO Son_Table(ID_Son, ID_Father) VALUES (_ID_Son_Table, _ID_Father_Table);

    IF _Optional1 <> ' ' THEN 
        UPDATE Son_Table SET Optional1 =_Optional1  WHERE ID_Son=_ID_Son; 
    END IF;

    IF _Optional2 <> -1 THEN 
        UPDATE Paese SET Optional2=_Optional2 WHERE ID_Son=_ID_Son; 
    END IF;

END;
$$ LANGUAGE plpgsql;

Father_Table可以是(例如)Son_Table,Son_Table2和Son_Table3 具有完全独有的isa层次结构。

Father_Table(ID_Father, ...)
    PK: ID_Father

Son_Table(ID_Son, ID_Father, Optional1, Optional2)
    PK: ID_Son, ID_Father
    FK: ID_Father References Father_Table

Son_Table2(ID_Son2, ID_Father, ...)
    PK: ID_Son, ID_Father
    FK: ID_Father References Father_Table

0 个答案:

没有答案