【发布时间】:2022-12-10 17:45:28
【问题描述】:
我在 PostgreSQL 中有 2 个表
认证类型
| id | name | created_at | updated_at |
|---|---|---|---|
| c1cc0489-4740-4dca-9d63-14e4c26093ad | password | ... | ... |
帐户
| id | password | authentication_type_id | created_at | updated_at | |
|---|---|---|---|---|---|
| ... | abc@example.com | (foreign key to the other table) | ... | ... |
我想在以下条件下插入该行
- 认证类型名称为password时,password列的值不能为null
我试过什么?
CHECK CONSTRAINT (
authentication_type_id='c1cc0489-4740-4dca-9d63-14e4c26093ad'
AND
password IS NOT NULL
)
但这不起作用。我不确定如何在这里写一个 if else 条件
问题
- 是否可以使用 CHECK CONSTRAINT 执行此操作,或者我是否需要插入前触发器?两者有什么区别?
如果有帮助,我正在使用 sequelize 来执行此操作
【问题讨论】:
-
每当您在
CHECK中使用AND时,您都在检查两个单独的条件,应该考虑将其设为两个单独的 CHECK。在这种情况下,这不是您想要的,所以AND是错误的。有关详细信息,请参阅我的答案。
标签: sql postgresql triggers sequelize.js constraints