phpmyadmin 如何在MySQL中设置2个bool列,使其始终只有1个为真?

dy2hfwbg  于 2022-11-09  发布在  PHP
关注(0)|答案(1)|浏览(145)

我有这张表:

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个快速问题,首先,我将如何着手只允许isOutgoing / isIngoing为真,但不能都为真?就像我可以做一个触发器,但在逻辑上感到困惑,因为我怎么知道哪一个是真的?,或者我应该只是做一个触发器抛出一个错误?不确定最好的方式去做这件事。
第二个问题,我可以进一步规范化这个表吗?

7uhlpewt

7uhlpewt1#

也许这就是你想要的:

alter table transactions add constraint in_out_check 
check (
  not(isOutgoing = true and isIngoing = true)
);

关于规范化,如果您的description是预定义的,那么为description创建一个查找表并将transaction表中的description列替换为查找表中的id列可能会很有用。

相关问题