mysql 里邊,自增長id,寫數(shù)據(jù)時(shí),是先把數(shù)據(jù)寫進(jìn)去,然后再給這條數(shù)據(jù)一個(gè)id,還是先給id,然后再把要插入的數(shù)據(jù)寫進(jìn)去
問題描述
mysql 里邊,自動(dòng)增長的id , 現(xiàn)在如果往里邊寫一條數(shù)據(jù),里邊的具體過程,是先把數(shù)據(jù)寫進(jìn)去,然后再給這條數(shù)據(jù)一個(gè)id,還是先給id,然后再把要插入的數(shù)據(jù)寫進(jìn)去。好奇一下
問題解答
回答1:MYSQL已經(jīng)算好了下次需要填寫的自增ID了
如下圖所示.數(shù)據(jù)庫有62行,自增值到了63.
未指定ID則MYSQL自己填寫,如果填寫小于自動(dòng)遞增,則報(bào)錯(cuò)!如果填寫大于自動(dòng)遞增,則自動(dòng)遞增變成填寫數(shù)+1
獲取插入ID:MYSQLI : mysqli_insert_id方法PDO : PDO::lastInsertId方法MYSQL : mysql_insert_id方法
其中MYSQL方式連接數(shù)據(jù)庫已棄用,可能在未來版本移除
下面這條SQL可以實(shí)現(xiàn)你要的需求,但是我不確定這么干好不好,還有數(shù)據(jù)結(jié)構(gòu)設(shè)置成這樣,真的好嗎?
INSERT INTO sta_log_fun(`FCNAME`,`STATUS`) VALUES(’WOQU’,(SELECT auto_increment FROM information_schema.`TABLES` WHERE TABLE_SCHEMA=’test2’ AND TABLE_NAME=’sta_log_fun’));
效果如下圖:
沒去研究過,但是我猜想是不是和我們手動(dòng)插入數(shù)據(jù)一樣,是一同寫入的。獲取當(dāng)前表id的最大值,加上設(shè)定的自增值,放入數(shù)據(jù)一同插入。。。。
