Mysql
 sql >> база данни >  >> RDS >> Mysql

ограничението за проверка няма да работи mysql

MySQL не налага ограничения за проверка.

Това е добре документирано отклонение от SQL стандарта. (Въпреки че е неочаквано за непосветените.)

Ако се нуждаете от базата данни на MySQL, за да наложите „ограничение за проверка“, налагането трябва да бъде кодирано в BEFORE INSERT и BEFORE UPDATE задействане.

Тази бележка:

е заровен в MySQL Reference Manual, под CREATE TABLE синтаксис.

Справка:https://dev.mysql.com/doc /refman/5.5/en/create-table.html

ПРЕДУПРЕЖДЕНИЕ ЗА ENUM

ENUM не ограничава вмъкването на "невалидни" стойности; невалидна стойност се преобразува в низ с нулева дължина, издава се предупреждение, но това не е грешка.

Демонстрация:

CREATE TABLE foo (gen ENUM('M','F'))

INSERT INTO foo (gen) VALUES ('x')

-- Warning Code : 1265
-- Data truncated for column 'gen' at row 1

SELECT gen, CHAR_LENGTH(gen) FROM foo;

-- gen  CHAR_LENGTH(gen)  
-- ---  ----------------
--                     0


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SELECT TOP грешка

  2. Как да активирам LOAD DATA LOCAL INFILE в Propel?

  3. как да наложите условно ограничение за уникалност

  4. Изброяване на таблици, използвани в mysql заявка?

  5. Игнорирайте грешката с дублиран ключ в MySQL при INSERT