자동 증가 시작 번호를 변경하시겠습니까?
MySQL에는 테이블이 있으며, 이 테이블은auto_increment
에 가치를 두다.5
대신1
이것이 가능합니까?또한 어떤 쿼리 스테이트먼트가 이 기능을 합니까?
사용할 수 있습니다.ALTER TABLE
auto_interial 초기값을 변경하려면:
ALTER TABLE tbl AUTO_INCREMENT = 5;
자세한 내용은 MySQL 참조를 참조하십시오.
네, 사용하실 수 있습니다.ALTER TABLE t AUTO_INCREMENT = 42
진술.단, 이로 인해 적어도 InnoDB 및 특정 MySQL 버전에서는 테이블 전체가 재구축될 수 있습니다.이미 수백만 개의 행이 있는 데이터 세트가 있는 경우 완료하는 데 매우 오랜 시간이 걸릴 수 있습니다.
제 경험으로는 다음을 수행하는 것이 좋습니다.
BEGIN WORK;
-- You may also need to add other mandatory columns and values
INSERT INTO t (id) VALUES (42);
ROLLBACK;
이렇게 하면 트랜잭션을 롤백하더라도 MySQL은 자동 증가 값을 유지하며 변경 내용이 즉시 적용됩니다.
이것을 확인하려면 , 다음의 명령어를 발행합니다.SHOW CREATE TABLE t
진술.다음 사항을 확인해 주십시오.
> SHOW CREATE TABLE t \G
*************************** 1. row ***************************
Table: t
Create Table: CREATE TABLE `t` (
...
) ENGINE=InnoDB AUTO_INCREMENT=43 ...
MySQL에서 10부터 시작하여 1씩 자동 증분하는 방법:
create table foobar(
id INT PRIMARY KEY AUTO_INCREMENT,
moobar VARCHAR(500)
);
ALTER TABLE foobar AUTO_INCREMENT=10;
INSERT INTO foobar(moobar) values ("abc");
INSERT INTO foobar(moobar) values ("def");
INSERT INTO foobar(moobar) values ("xyz");
select * from foobar;
'10', 'abc'
'11', 'def'
'12', 'xyz'
그러면 id 열이 10부터1씩 증가합니다.
MySQL에서 10부터 시작하여 5까지 자동 증가:
drop table foobar
create table foobar(
id INT PRIMARY KEY AUTO_INCREMENT,
moobar VARCHAR(500)
);
SET @@auto_increment_increment=5;
ALTER TABLE foobar AUTO_INCREMENT=10;
INSERT INTO foobar(moobar) values ("abc");
INSERT INTO foobar(moobar) values ("def");
INSERT INTO foobar(moobar) values ("xyz");
select * from foobar;
'11', 'abc'
'16', 'def'
'21', 'xyz'
그러면 id 열은 10부터 시작하여 매번 5씩 증가합니다.
phpmyadmin을 사용하여 실행할 수도 있습니다.작업으로 이동하지 말고 테이블을 선택하십시오.또한 테이블 아래의 Auto increment 옵션을 변경합니다.시작 클릭 잊지 마세요.
테이블의 AUTO_INCREMENT 값을 자동 수정하는 절차
DROP PROCEDURE IF EXISTS update_auto_increment;
DELIMITER //
CREATE PROCEDURE update_auto_increment (_table VARCHAR(64))
BEGIN
DECLARE _max_stmt VARCHAR(1024);
DECLARE _stmt VARCHAR(1024);
SET @inc := 0;
SET @MAX_SQL := CONCAT('SELECT IFNULL(MAX(`id`), 0) + 1 INTO @inc FROM ', _table);
PREPARE _max_stmt FROM @MAX_SQL;
EXECUTE _max_stmt;
DEALLOCATE PREPARE _max_stmt;
SET @SQL := CONCAT('ALTER TABLE ', _table, ' AUTO_INCREMENT = ', @inc);
PREPARE _stmt FROM @SQL;
EXECUTE _stmt;
DEALLOCATE PREPARE _stmt;
END//
DELIMITER ;
CALL update_auto_increment('your_table_name')
이 절차가 변수 필드 이름에 필요한 경우id
이것은 도움이 될 수 있습니다.
DROP PROCEDURE IF EXISTS update_auto_increment;
DELIMITER //
CREATE PROCEDURE update_auto_increment (_table VARCHAR(128), _fieldname VARCHAR(128))
BEGIN
DECLARE _max_stmt VARCHAR(1024);
DECLARE _stmt VARCHAR(1024);
SET @inc := 0;
SET @MAX_SQL := CONCAT('SELECT IFNULL(MAX(',_fieldname,'), 0) + 1 INTO @inc FROM ', _table);
PREPARE _max_stmt FROM @MAX_SQL;
EXECUTE _max_stmt;
DEALLOCATE PREPARE _max_stmt;
SET @SQL := CONCAT('ALTER TABLE ', _table, ' AUTO_INCREMENT = ', @inc);
PREPARE _stmt FROM @SQL;
EXECUTE _stmt;
DEALLOCATE PREPARE _stmt;
END //
DELIMITER ;
CALL update_auto_increment('your_table_name', 'autoincrement_fieldname');
테이블과 데이터를 내보내기만 하면 됩니다.sql을 다음과 같이 복사합니다.
CREATE TABLE IF NOT EXISTS `employees` (
`emp_badgenumber` int(20) NOT NULL AUTO_INCREMENT,
`emp_fullname` varchar(100) NOT NULL,
`emp_father_name` varchar(30) NOT NULL,
`emp_mobile` varchar(20) DEFAULT NULL,
`emp_cnic` varchar(20) DEFAULT NULL,
`emp_gender` varchar(10) NOT NULL,
`emp_is_deleted` tinyint(4) DEFAULT '0',
`emp_registration_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`emp_overtime_allowed` tinyint(4) DEFAULT '1',
PRIMARY KEY (`emp_badgenumber`),
UNIQUE KEY `bagdenumber` (`emp_badgenumber`),
KEY `emp_badgenumber` (`emp_badgenumber`),
KEY `emp_badgenumber_2` (`emp_badgenumber`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=111121326 ;
이제 자동 증분 값을 변경하고 sql을 실행합니다.
언급URL : https://stackoverflow.com/questions/970597/change-auto-increment-starting-number
'programing' 카테고리의 다른 글
값을 붙여 임시 열을 추가하다 (0) | 2023.01.21 |
---|---|
JUnit에서는 assertNotEquals 메서드가 제공되지 않는 이유는 무엇입니까? (0) | 2023.01.21 |
PHP 함수 호출(REEDOC 문자열 내) (0) | 2023.01.21 |
generator.next()는 Python 3에 표시됩니까? (0) | 2023.01.21 |
Larabel 5 관계를 쿼리하면 "null에서 멤버 함수 addEagerConstraints() 호출" 오류가 발생합니다. (0) | 2023.01.21 |