Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

O MySQL realizou insercao fora da restricao

Ola'

O MySQL executou uma insercao de linha mesmo o valor estando fora da restricao apesar de o campo ter ficado vazio

ALTER TABLE COMPRAS ADD COLUMN FORMA_PAGT ENUM('CARTAO', 'DINHEIRO', 'CHEQUE') DEFAULT 'DINHEIRO';
INSERT INTO COMPRAS (VALOR, DATA, OBSERVACOES, FORMA_PAGT) VALUES (111.11, '2017-10-20', 'NADA A DECLARAR', 'XYZ');

Resultado:


mysql> SELECT * FROM COMPRAS WHERE VALOR=111.11;                                                         +----+--------+------------+-----------------+---------+------------+
| id | valor  | data       | observacoes     | BOOLEAN | FORMA_PAGT |
+----+--------+------------+-----------------+---------+------------+
| 44 | 111.11 | 2017-10-20 | NADA A DECLARAR |       0 |            |
| 45 | 111.11 | 2017-10-20 | NADA A DECLARAR |       0 | CARTAO     |
+----+--------+------------+-----------------+---------+------------+

mysql> DESC compras;
+-------------+------------------------------------+------+-----+----------+----------------+
| Field       | Type                               | Null | Key | Default  | Extra          |
+-------------+------------------------------------+------+-----+----------+----------------+
| id          | int(11)                            | NO   | PRI | NULL     | auto_increment |
| valor       | double                             | YES  |     | NULL     |                |
| data        | date                               | YES  |     | NULL     |                |
| observacoes | varchar(255)                       | YES  |     | NULL     |                |
| RECEBIDO    | tinyint(1)                         | YES  |     | 0        |                |
| FORMA_PAGT  | enum('CARTAO','DINHEIRO','CHEQUE') | YES  |     | DINHEIRO |                |
+-------------+------------------------------------+------+-----+----------+----------------+
6 rows in set (0.01 sec)

Nao deveria ter dado ERRO de insercao?

Obrigado

2 respostas

Boa tarde Orlando, não tem nenhum erro com o insert, observe bem que o ID da tabela compras é auto_increment, então vc não precisa especificar o ID quando for fazer o insert.

solução!

Joao, obrigado mas o problema nao e' com o ID, o problema e na coluna FORMA_PAGT, que nao poderia ter (acho) aceitado inserir o valor 'XYZ', que nao faz parte da ENUM, porem inseriu a linha ainda que o campo tenha ficado vazio, entendeu? Abc