Quero usar o tipo JSON em vez de tabela. Por exemplo: CREATE TABLE xds ( id serial NOT NULL PRIMARY KEY, info json NOT NULL ); INSERT INTO xds (info) VALUES('{ "cliente": "Lily Bosch", "type": ["vendas","marketing","escritório"]}'), ('{ "cliente": "Josh William ","type": ["vendas", "escritório"]}'), ('{ "cliente": "Mary Clark", "type": ["gerenciamento","startup"]}'); Mas eu gostaria de validar o "type", seus valores deveriam ser de outra tabela. Posso fazer validação em triggers (I, U) mas como fazer?
Concordando com o comentário de Mike acima, o que você está tentando fazer é uma má ideia, porque você terá que fazer um esforço extra para fazer isso. Se você realmente deseja usar JSON, aqui está o método possível:
Uma função de gatilho e uma restrição de verificação podem ser criadas. Faça primeiro uma tabela de referência com valores de "tipo" apropriados:
Crie uma função de gatilho que verifique os valores dos parâmetros de "tipo" JSON:
Crie um gatilho na tabela para invocar a função de gatilho e então:
Essa configuração garante que as entradas "type" na coluna JSON da tabela "xds" sejam verificadas em relação à tabela de referência "valid_types", lançando uma exceção se algum valor estiver faltando.
Para obter mais orientações, você também pode consultar esta documentação . Eu espero que isso ajude.