Sub consultas SQL en la restricción check


¿Puedo hacer sub consultas SQL en la restricción Check?

Tengo una tabla post con columnas id, owner
Tengo otra tabla action con columnas user_id, post_id
Tabla user con columnas id

post_id -> post.id y user_id -> user.id también post.owner -> user.id

Ahora quiero restringir post(post_id).id != user_id en la tabla action

¿Cómo es eso posible ?

Author: Dipro Sen, 2012-04-16

1 answers

No se admite mirar más allá de la fila actual en una restricción de VERIFICACIÓN.

Http://www.postgresql.org/docs/9.1/interactive/sql-createtable.html dice:

Una restricción de comprobación especificada como restricción de columna debe hacer referencia solo el valor de esa columna, mientras que una expresión aparece en una tabla la restricción puede hacer referencia a varias columnas.

Actualmente, las expresiones CHECK no pueden contener subconsultas ni referirse a variables distintas de las columnas del fila actual.

Hay buenas razones para esta restricción, pero si te gusta hacer malabares con antorchas encendidas mientras conduces un monociclo a través del tráfico pesado, puedes subvertir la restricción usando funciones. Las situaciones en las que esto no vuelve a morderte son raras; sería mucho más seguro imponer el invariante en el código de disparo en su lugar.

Http://www.postgresql.org/docs/9.1/interactive/triggers.html

 53
Author: kgrittn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-04-16 18:13:04