2014년 2월 10일 월요일

mysql table int pk값 0들어가는 현상

mysql db 에서 int 형 primary key 가 0이 들어갈경우
일단
1.null 값이 허용되면 null일경우 0으로 갱신

mysql sql_mode 설정 값 변경

>> select @@global.sql_mode;
>> select @@session.sql_mode;

현재 sql_mode 값 확인

>> set sql_mode = 'NO_AUTO_VALUE_ON_ZERO';

으로 설정해줄수 잇음

오늘 현상은 그것은 아니었고

insert into table(intpk, val1) values('0','t');
auto increment 가  intpk에 걸려있으면 당연히 0을 넣어도 1 그리고 그 이후값이 들어가짐 


그런데 유니크인덱스 또는 프라이머리키  intpk, email 두개 걸려잇음

insert into table(intpk, val1, email) values('0','t','ss@ss.s.s') duplicate key update
intpk = '0',
email = 'ss@ss.s.s';

이러면 intpk가 0으로 업데이트가됨


=================================================================

unique 키가 두개 물려 잇음(a,b)가 물렷다 가정하자
insert into table(a,b,c) values('1',2,3);

duplicate key update c = 1

이것은 곧


insert into table(a,b,c) values('1',2,3);

update table set c= 1  where a= 1 or b= 2 limit 1

이거랑 같은말임


duplicate key update c = 1, a=LAST_INSERT_ID(a) 이런것도 한 방법이 될수 있음


http://dev.mysql.com/doc/refman/5.6/en/insert-on-duplicate.html

댓글 없음:

댓글 쓰기