我想使用 JSON 类型而不是表。例如: CREATE TABLE xds ( id serial NOT NULL PRIMARY KEY, info json NOT NULL ); INSERT INTO xds (info) VALUES('{ "customer": "Lily Bosch", "type": ["sales","marketing","office"]}'), ('{ "customer": "Josh William ","type": ["sales", "office"]}'), ('{ "customer": "Mary Clark", "type": ["management","startup"]}'); 但我想验证“type”,它的值应该来自其他表。我可以在触发器(I,U)中进行验证,但该怎么做?
同意迈克的上述评论,你想做的是一个坏主意,因为你必须付出额外的努力才能做到这一点。如果你真的想使用 JSON 那么这里是可能的方法:
可以设置触发函数和检查约束。首先使用适当的“类型”值制作参考表:
创建一个触发器函数,然后验证 JSON“类型”参数的值:
在表上创建一个触发器来调用触发器函数,然后:
此配置可确保“xds”表的 JSON 列中的“type”条目根据“valid_types”引用表进行验证,如果缺少任何值,则会引发异常。
如需进一步指导,您还可以参考此文档。我希望这有帮助。