테이블 정의할 때의 NOT NULL은 uid가 PRIMARY KEY이기 때문에 그렇구요...
그리고 AUTO_INCREMENT로 컬럼을 만들면 무조건 디폴트가 NULL 입니다.
보통 INSERT로 레코드 삽입할 때, AUTO_INCREMENT 컬럼에는
INSERT INTO table_name VALUES( NULL ) ;
이렇게 입력하잖아요...
그니깐 디폴트가 NULL..
이해가 되시려나.
그럼
>>natalie 님께서 쓰시길<<
:: 테이블을 생성하는데요.
::
::
:: 1 create table book1(
:: 2 uid mediumint(9) unsigned default '0' not null auto_increment,
:: 3 name varchar(12) default '' not null,
:: 4 email varchar(40),
:: 5 homepage varchar(60),
:: 6 comment text not null,
:: 7 signdate int(10) unsigned default '0' not null,
:: 8 clienthost varchar(20),
:: 9 primary key(uid)
:: 10 );
::
:: 위와 같이 book1.sql이란 파일로
:: 만들어서
::
:: mysql -u user -p guestbook < book1.sql
::
:: 이라구 해줬거든요
:: guestbook이란 데이타베이스에
:: book1.sql에 있는 정의대로
:: 테이블을 생성했는데요.
:: 프라이멀 키로 지정된 uid를 보면요
:: not null로 default를 숫자 0으로 지정해
:: 줬는데 default에 null로 나오거든요..
:: 아래처럼요.
::
:: mysql> desc book1;
:: +------------+-----------------------+------+-----+---------+----------------+
:: | Field | Type | Null | Key | Default | Extra |
:: +------------+-----------------------+------+-----+---------+----------------+
:: | uid | mediumint(9) unsigned | | PRI | NULL | auto_increment |
:: | name | varchar(12) | | | | |
:: | email | varchar(40) | YES | | NULL | |
:: | homepage | varchar(60) | YES | | NULL | |
:: | comment | text | | | | |
:: | signdate | int(10) unsigned | | | 0 | |
:: | clienthost | varchar(20) | YES | | NULL | |
:: +------------+-----------------------+------+-----+---------+----------------+
::
:: 위에 보면 signdate는 uid하구 같게
:: 지정해 줬는데 올바로 default에 숫자 0이
:: 나오는데 uid는 null이라구 나와요
:: 이거 왜 이래요?
:: 제가 멀 잘못 정의했나요?
:: 답변 부탁드려요..
::
|