Моя цель состоит в том, чтобы предотвратить вставку, если "адрес" с тем же "account_id", что и "is_principal" true (я хочу, чтобы только один адрес is_principal для учетной записи).
Есть ли способ создать SQL ограничение с UNIQUE и CHECK?
Я пробую это:
ALTER TABLE address ADD CONSTRAINT fk_account_adresses2_idx UNIQUE(account_id, CHECK (is_principal >= 1));
ОШИБКА:
SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CHECK (is_principal >= 1))' at line 1 (SQL: ALTER TABLE address ADD CONSTRAINT fk_compte_adresses2_idx UNIQUE(account_id, CHECK (is_principal >= 1));)
Спасибо.
РЕДАКТИРОВАТЬ:
ВСТАВИТЬ примеры, которые должны работать:
insert into `address` (`address`, `account_id`, `is_principal`) values (address 1, 1, 1);
insert into `address` (`address`, `account_id`, `is_principal`) values (address 2, 1, 0);
insert into `address` (`address`, `account_id`, `is_principal`) values (address 3, 1, 0);
ВСТАВИТЬ примеры, которые должны работать:
insert into `address` (`address`, `account_id`, `is_principal`) values (address 1, 1, 1);
insert into `address` (`address`, `account_id`, `is_principal`) values (address 2, 1, 1);