我有下表
CREATE TABLE `mview_state` (
`state_id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'View State ID',
`view_id` varchar(255) DEFAULT NULL COMMENT 'View ID',
`mode` varchar(16) DEFAULT 'disabled' COMMENT 'View Mode',
`status` varchar(16) DEFAULT 'idle' COMMENT 'View Status',
`updated` datetime DEFAULT NULL COMMENT 'View updated time',
`version_id` int(10) unsigned DEFAULT NULL COMMENT 'View Version ID',
PRIMARY KEY (`state_id`),
KEY `MVIEW_STATE_VIEW_ID` (`view_id`),
KEY `MVIEW_STATE_MODE` (`mode`)
) ENGINE=InnoDB AUTO_INCREMENT=50 DEFAULT CHARSET=utf8 COMMENT='View State'
有以下数据
https://dbfiddle.uk/?rdbms=mariadb_10.5&fiddle=036fb3a69c75a92769a9262ec4af292e
我想添加一个约束,以便当view_id
列值等于时catalogrule_rule
,mode
列必须等于enabled
我正在阅读,这看起来需要一个检查约束,但我不确定如何创建它,以便所有其他值都有效,但这个特定条件将始终得到遵守。
因此,只有当值为view_id
is时才catalogrule_rule
必须将 mode 设置为enabled
CHECK 约束将不允许插入或更新未在模式下启用的新行,例如我输入的额外插入。
它不会将其设置为启用
db<>在这里摆弄