es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo establecer que 2 columnas de tipo booleano (bool) siempre tengan solamente un valor verdadero (true) en MySQL?

Tengo esta tabla:

CREATE TABLE transactions (
transaction_id INT NOT NULL AUTO_INCREMENT,
account_id INT NOT NULL,
transaction_date DATETIME NOT NULL DEFAULT getdate(),
)ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;

2 preguntas rápidas,
primero ¿cómo puedo permitir que solo isOutgoing/isIngoing sea VERDADERO pero no ambos al mismo tiempo?, como podría hacer un disparador, pero estoy confundido con la lógica porque ¿cómo sabría cuál se supone que debe ser VERDADERO?, ¿o debería hacer un disparador para arrojar un error? No estoy seguro de cuál es la mejor manera de proceder.

Segunda pregunta, ¿podría normalizar aún más esta tabla potencialmente?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai
    1. Para asegurarse de que solo uno de isOutgoing e isIncoming está configurado como TRUE, se puede crear un disparador que verifique los valores de ambas columnas y genere un error si ambas están configuradas como TRUE.

    2. Es posible normalizar esta tabla aún más, dependiendo de los datos que se estén almacenando. Por ejemplo, si se está almacenando información sobre la cuenta asociada con la transacción, se podría crear una tabla separada para las cuentas y almacenar el account_id en la tabla de transactions.

Comments are closed.