auto_increment 속성이있는 필드없이 삽입하는 동안 auto_increment 시나리오를 시뮬레이트하고 싶습니다.동일한 문장에서 mysql insert select
insert into acct set id=(select @vid:=max(id)+1); select @vid;
는 기본적으로, 내가 삽입을 원하고 그래서 장해의 가치를 보장 할 수있는 같은시에 실시하는 선택 독특 다음은 시나리오 SQL 문입니다.
auto_increment 속성이있는 필드없이 삽입하는 동안 auto_increment 시나리오를 시뮬레이트하고 싶습니다.동일한 문장에서 mysql insert select
insert into acct set id=(select @vid:=max(id)+1); select @vid;
는 기본적으로, 내가 삽입을 원하고 그래서 장해의 가치를 보장 할 수있는 같은시에 실시하는 선택 독특 다음은 시나리오 SQL 문입니다.
: 당신이 autoincremented 값이 보장 고유성와의 거래를 통해 공유하고자 할 경우
START TRANSACTION;
insert into acct set id=(select @vid:=max(id)+1);
select @vid;
COMMIT;
트랜잭션없이 하나의 SQL 문에서이를 수행 할 수 있습니까? 기본적으로 삽입 작업 중에 max (id) +1의 값을 읽고 싶습니다. – Ken
, 당신은해야을 마지막 고유 값을 보유 할 모든 트랜잭션에 대해 보이는 잠글 수있는 싱글 톤.
MyISAM
에서 서버 시작 후 첫 번째 삽입시 MAX(id)
으로 채워진 특수 메모리 개체에 테이블의 메타 데이터 InnoDB
에 저장됩니다.
물론 하나의 레코드로 전용 테이블을 만들 수는 있지만 솔직히 그러한 솔루션의 빌드 인 기능에 대한 이점은 없습니다.
MySQL에있는 auto_increment 기능을 사용하지 않는 이유는 무엇입니까? http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html – DXL
자신의 auto_increment 기능을 롤업하려고하면 동시성 문제가 발생할 것입니다. –