【发布时间】:2020-03-19 19:54:26
【问题描述】:
我正在尝试创建一个函数,从表中插入一个新人并验证该人的性别(必须是“男性”或“女性”)。我知道如何创建一个插入新人的函数,并且我知道如何创建一个在性别现在是男性或女性时引发异常的函数。但我不知道如何在一个函数中不使用触发器来执行此操作。
我已经是这样的:
CREATE OR REPLACE FUNCTION InsertPerson(IN _id INTEGER, IN _name VARCHAR(50), IN _gender CHAR(1))
RETURNS void
AS
$$
BEGIN
IF NEW.gender <> 'Female' AND NEW.gender <> 'Male' THEN
RAISE EXCEPTION 'Gender must be either Female or Male';
END IF;
INSERT INTO Person (ID, name, gender)
VALUES(_id, _name, _gender);
END;
$$ LANGUAGE plpgsql;
谁能帮帮我
【问题讨论】:
-
您是否考虑过使用枚举列而不是 varchar。这将自动只允许您指定的值。这也可能使您的数据库更快地进行搜索和引用,因为搜索/匹配字符串/字符相对较慢
标签: postgresql function if-statement insert