이 질문에는 이미 답변이 있습니다.
mysql5.5의 테이블 구조
tablename :
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을 방지 할 수 있습니다.
문안 인사
이 시도:
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)
''
~과 다르다.NULL
때문에''
빈 문자열을 의미하므로 물론 허용 할 것입니다. - user3522371
null
값이 다르다면,NOT NULL
제약 조건은 빈 문자열을 방지하지 않습니다. 빈 문자열의 경우 사용할 수 있습니다.check
이 질문과 같은 제약 :stackoverflow.com/questions/2514178/… - Mahmoud Gamal