일단
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
댓글 없음:
댓글 쓰기