0

この質問にはすでに答えがあります。

mysql5.5のテーブルの構造

テーブル名:

id:
name:
detail:

ここでもテーブルを変更する:

ALTER TABLE tablename MODIFY name VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_persian_ci NOT NULL;

または

ALTER TABLE `tablename` CHANGE `name` `name` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_persian_ci NOT NULL DEFAULT NOT NULL;

値を挿入した後

INSERT INTO `databasename`.`tablename` (`id`, `name`, `detail`) VALUES (NULL, '', 'asdfasfdadsfadsfafd');

クエリは正常に実行され、エラー行はテーブルに追加されていません。

どのように私はそのような空またはnullを防ぐことができます。

よろしく


1 답변


0

これを試して:

ALTER TABLE tablename 
MODIFY COLUMN name VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_persian_ci NOT NULL CHECK (name <> '');

デモ:

mysql> create table tablename(id int(2) not null, something varchar(25) null, primary key(id));
Query OK, 0 rows affected (0.15 sec)
mysql> insert into tablename values(0,'hello');
Query OK, 1 row affected (0.38 sec)

mysql> insert into tablename values(1,'salut');
Query OK, 1 row affected (0.31 sec)

mysql> select * from tablename;
+----+-----------+
| id | something |
+----+-----------+
|  0 | hello     |
|  1 | salut     |
+----+-----------+
2 rows in set (0.00 sec)

今、私は実行しますUPDATEコマンド:

mysql> ALTER TABLE tablename  MODIFY COLUMN something VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_persian_ci NOT NULL;
Query OK, 2 rows affected (0.70 sec)
Records: 2  Duplicates: 0  Warnings: 0

挿入します普通の行:

mysql> insert into tablename values(2,'france');
Query OK, 1 row affected (0.29 sec)

しかし、それは私がNULL値を挿入することを可能にしません:

mysql> insert into tablename values(3,NULL);
ERROR 1048 (23000): Column 'something' cannot be null

私は確かめるためにチェックします:

mysql> select * from tablename;
+----+-----------+
| id | something |
+----+-----------+
|  0 | hello     |
|  1 | salut     |
|  2 | france    |
+----+-----------+
3 rows in set (0.00 sec)


  • 効果なし同じ結果。 - SAR
  • @abas_rafiq作成したテストテーブルで、入力したコマンドを試しました。あなたはそれがその仕事をとてもよくするのを見ることができます(それは私にNULL値の挿入を許すことはできません)。しかし、あなたの場合、私はその理由を理解していません。 MySQLのバージョンを表示することをお勧めします - user3522371
  • 試してください(tablenameの値に挿入(3、&#39;&#39;);) - SAR
  • @ abas_rafiqいいえ、あなたは間違っています:''とは違うNULLなぜなら''空の文字列を意味するので、もちろんそれを受け入れます - user3522371
  • はい私の挿入で私は説明しているnullではない私は空でないことを意味 - SAR

リンクされた質問


関連する質問

最近の質問