2015-02-05 1 views
0

Я знаю, что InnoDB обеспечивает внешний ключ. Есть ли двигатель для MySQL/MariaDB, который действительно реализует CHECK?Есть ли двигатель для MySQL/MariaDB, который обеспечивает ПРОВЕРКУ?

Пусть я создать таблицу с помощью следующей команды:

create table a(t timestamp not null, check (t > '2014-05-01')) ENGINE=InnoDB;

, и я пытаюсь вставить строку, которая будет предполагать недействительным:

insert into a(t) values('2014-01-01');

MySQL, используя InnoDB , разрешить вставку этой недопустимой строки. Я хотел бы использовать движок, который не принимал бы эту вставку. Есть ли двигатель для этой работы?

+1

Я не верю, что есть, но потенциальное решение было выложено [здесь] [1] [1]: http://dba.stackexchange.com/a/9668 – Chad

+1

Вы всегда можете перейти на Postgres (SCNR) –

ответ

1

В MySQL нет такого engine. Если вы должны проверить на уровне базы данных, единственным вариантом является использование триггеров и проверка данных там.

Может быть, один день, хотя: http://bugs.mysql.com/bug.php?id=3464

1

СНЕСК работает, как ожидалось в MariaDB 10.2, который в настоящее время бета-тестирования. https://jira.mariadb.org/browse/MDEV-7563

+0

Это потрясающая новость. –

Смежные вопросы