Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

verificar restrição não funcionará mysql


O MySQL não impõe restrições de verificação.

Este é um desvio bem documentado do padrão SQL. (Embora seja inesperado pelos não iniciados.)

Se você precisar que o banco de dados MySQL imponha uma "restrição de verificação", a imposição deve ser codificada em um BEFORE INSERT e um BEFORE UPDATE acionar.

Esta nota:

está enterrado no MySQL Reference Manual, sob o CREATE TABLE sintaxe.

Referência:https://dev.mysql.com/doc /refman/5.5/en/create-table.html

AVISO SOBRE ENUM

Um ENUM não restringe a inserção de valores "inválidos"; um valor inválido é convertido em uma string de comprimento zero, um aviso é emitido, mas não é um erro.

Demonstração:
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