将约束添加到引用另一个表的记录子集的表

时间:2016-01-16 19:29:04

标签: sql postgresql constraints

说我有以下表格:

User(user_id, name, age,...)
Job(job_id, salary, user_id)

我希望对Job设置约束,以便每当工作的薪水都是> 20,000,执行该作业的用户必须年龄≥1岁。我已经尝试了CHECK约束,但它似乎仅适用于单个表?

2 个答案:

答案 0 :(得分:2)

这是正确的,检查约束仅适用于单个表。 您必须使用触发程序来阻止不需要的数据,请参阅触发程序中的以下链接。

Postgresql Documentation - Trigger Procedures

答案 1 :(得分:2)

您可以使用用户定义的功能执行此操作。该函数可以在另一个表中查找该值。

我不一定推荐这种方法。对于许多应用程序,我将insert / update语句包装在存储过程/函数中并将逻辑放在那里。但是,这可以在没有触发的情况下实现。