Добрый вечер. Создаю таблицу запросом: CREATE TABLE IF NOT EXISTS tb (id INT UNSIGNED, column0 VARCHAR(20), column1 INT DEFAULT 25 CHECK(column1>10)); СУБД принимает запрос без ошибок и создаёт таблицу. Но если затем сделать: INSERT INTO tb (column1) VALUES(1); то значение 1 преспокойно добавится в column1, несмотря на выставленное ограничение column1>10. Кто-нибудь знает, почему CHECK игнорируется? Он вообще работает в mySQL? Спасибо.
Спасибо. Ещё есть непонятки с конструкцией CONSTRAINT. Например, пишу: - CREATE TABLE tb (id INT, column0 VARCHAR(20), column1 INT, CONSTRAINT pk PRIMARY KEY(column1)). СУБД вроде всё делает. Но когда потом делаю запрос ALTER TABLE tb DROP CONSTRAINT p или ALTER TABLE tb DROP p (не знаю, какой из них написан правильно, в разных описаниях встречал и ту, и другую вариацию), возникает ошибка. ALTER TABLE tb DROP PRIMARY KEY работает нормально. Занятно, что на одном сайте нашёл описание, как правильно удалять именованное ограничение UNIQUE: - CREATE TABLE tb (id INT, column0 VARCHAR(20), column1 INT, CONSTRAINT pk UNIQUE(column1)) - тогда удаляется это так: - ALTER TABLE tb DROP INDEX pk. Проверял, работает. А вот ALTER TABLE tb DROP pk, ALTER TABLE tb DROP CONSTRAINT pk гонят ту же пургу. Складывается впечатление, что для каждого типа ограничений есть свой способ удаления, и уж во всяком случае что способов этих больше одного. Действительно ли это так? И как, например, можно удалить вышеупомянутый PRIMARY KEY, действуя через имя ограничения?