我的表中有两个布尔列。一个叫做 IsUnlisted,另一个叫做 IsPrivate。如果 IsUnlisted 也为 1 (TRUE),我只想使用检查约束允许 IsPrivate 为 1 (TRUE)。我使用的是 MariaDB,它与 mysql 共享大多数功能。
我的表中有两个布尔列。一个叫做 IsUnlisted,另一个叫做 IsPrivate。如果 IsUnlisted 也为 1 (TRUE),我只想使用检查约束允许 IsPrivate 为 1 (TRUE)。我使用的是 MariaDB,它与 mysql 共享大多数功能。
小提琴
如果 CHECK 约束表达式为 TRUE 或 NULL,则插入该行。
如果
IsUnlisted <> TRUE
为 TRUE 或 NULL(即 IsUnlisted 为 NULL 或 FALSE),则 CHECK 表达式也相应地为 TRUE 或 NULL,且该行有效。如果
IsUnlisted <> TRUE
为 FALSE(即 IsUnlisted 为 TRUE),则IsPrivate <=> TRUE
检查。仅当 IsPrivate 为 TRUE 时,它才为 TRUE,如果 IsPrivate 为 NULL 或 FALSE,它才为 FALSE。插入与 CHECK 约束不匹配的行会产生警告。
布尔值会给你 4 种状态;而上面的只给你 3 种。