2011-10-19 2 views
1

デフォルト値を持たず、insert文で指定されていないフィールドに対して、MySQLが空の値を挿入するのを止める設定はありますか? 私はそれが無効な挿入ステートメントを拒否したいと思います。MySQLでデフォルト値なしのフィールドに対して空の値の自動挿入を無効にすることはできますか?

例 - I持ってMySQLで次の表:

CREATE TABLE `test` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `val1` varchar(50) COLLATE utf8_unicode_ci NOT NULL, 
    `val2` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci 

あなたはこのinsert文を実行した場合:から

Query OK, 1 row affected, 1 warning (0.00 sec) 

応答:

INSERT INTO test (val2) VALUES('a'); 

あなたはこの応答を取得しますshow warnings

+---------+------+-------------------------------------------+ 
| Level | Code | Message         | 
+---------+------+-------------------------------------------+ 
| Warning | 1364 | Field 'val1' doesn't have a default value | 
+---------+------+-------------------------------------------+ 
1 row in set (0.00 sec) 

SELECT * FROM testからの応答:

+----+------+------+ 
| id | val1 | val2 | 
+----+------+------+ 
| 1 |  | asdf | 
+----+------+------+ 
1 row in set (0.00 sec) 

答えて

5

あなたは、'strict' modeを有効にすることができ、MySQLはデフォルトレスフィールドに値を提供していない任意の挿入を失敗させるwhich'd。

関連する問題