跨表的Postgres唯一组合约束

跨表的Postgres唯一组合约束,第1张

跨表的Postgres唯一组合约束

如果文件名列不是唯一的,则可以在

product_attachment
表上添加自定义约束。请注意,这将在每次插入和更新时执行以下查询,这并不是理想的性能。

CREATE OR REPLACe FUNCTION check_filename(product_id integer, file_id integer)RETURNS boolean AS$$    LOCK product_attachment IN SHARE MODE;    SELECT (COUNT(*) = 0)    FROM product_attachment pa    JOIN file f1 ON f1.file_id = pa.file_id    JOIN file f2 ON f1.filename = f2.filename    WHERe pa.product_id =  AND f2.file_id = $$LANGUAGE 'plpgsql'ALTER TABLE product_attachmentADD ConSTRAINT check_filename CHECK(check_filename(product_id, file_id))


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5620453.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存