1樓:愛可生雲資料庫
列的自增屬性,一般用來設定整數列根據一定步長逐步增長的值,類似於其他資料庫的序列。不過這裡的「序列」是基於特定一張表的。關於自增屬性的相關特性如下:
1. 控制自增屬性效能的變數:innodb_autoinc_lock_mode
innodb_autoinc_lock_mode=0
代表傳統模式,也就是說,在對有自增屬性的欄位插入記錄時,會持續持有一個表級別的自增鎖,直到語句執行結束為止。比如說下面兩條語句,sql 1 在執行期間,一直持有對錶 f1 的表級自增鎖,接下來 sql 2 執行時鎖超時。
innodb_autoinc_lock_mode=1
代表連續模式,和傳統模式差不多,不同的點在於對於簡單的插入語句,比如 sql 2,只在分配新的 id 過程中持有一個輕量級的互斥鎖(執行緒級別,而不是事務級別),而不是直到語句結束才釋放的表鎖。
代表交錯模式。這個模式下放棄了自增表鎖,產生的值會不連續。不過這是效能最高的模式,多條插入語句可以併發執行。mysql 8.0 預設就是交錯模式。
那針對複製安全來說,以上三種模式,0 和 1 對語句級別安全,也就是產生的二進位制日誌複製到任何其他機器都資料都一致;2 對於語句級別不安全;三種模式對二進位制日誌格式為行的都安全。
2. 控制自增屬性的步長以及偏移量
一般用在主主複製架構或者多源複製架構裡,主動規避主鍵衝突。
auto_increment_increment 控制步長
auto_increment_offset 控制偏移量
3. 對於要立刻獲取插入值的需求
就是說要獲取一張表任何時候的最大值,應該時刻執行以下 sql 3 ,而不是 sql 2。sql 2 裡的函式 last_insert_id() 只獲取上一條語句最開始的 id,只適合簡單的 insert。
4. 自增列溢位現象
自增屬性的列如果到了此列資料型別的最大值,會發生值溢位。比如變更表 f1 的自增屬性列為 tinyint。
sql 2 顯式插入最大值 127, sql 3 就報錯了。所以這點上建議提前規劃好自增列的欄位型別,提前瞭解上限值。
5. 自增列也可以顯式插入有符號的值
那針對這樣的,建議在請求到達資料庫前規避掉。
2樓:
方法一: 如果曾經的資料都不需要的話,可以直接清空所有資料,並將自增欄位恢復從1開始計數
truncate table 表名
方法二: dbcc checkident (』table_name』, reseed, new_reseed_value) 當前值設定為 new_reseed_value。如果自建立表後沒有將行插入該表,則在執行 dbcc checkident 後插入的第一行將使用 new_reseed_value 作為標識。
否則,下一個插入的行將使用 new_reseed_value + 1。如果 new_reseed_value 的值小於標識列中的最大值,以後引用該表時將產生 2627 號錯誤資訊。
方法二不會清空已有資料,操作比較靈活,不僅可以將自增值歸零,也適用於刪除大量連續行後,重新設定自增值並插入新的資料;或從新的值開始,當然不能和已有的衝突。
$sql="delete from $table_vote";
mysql_query($sql, $link);
$sql="alter table $table_vote auto_increment=1";
mysql_query($sql, $link);
3樓:_____至尊寶
問題描述清楚,需要自增還是不需要
mysql 設定id主鍵自增,從0開始,請問怎麼設?
4樓:小熙
有時候我們在測試**的時候,刪除測試資料導致id不是從0開始,那如果想id是從0開始怎麼辦呢?
mysql預設自增id是從1開始了,但當我們如果有插入表或使用delete刪除id之後id就會不會從1開始了.
使用mysql時,通常表中會有一個自增的id欄位,但當我們想將表中的資料清空重新新增資料時,希望id重新從1開始計數,用以下兩種方法均可.
通常的設定自增欄位的方法,建立**時新增:
create table table1(id int auto_increment primary key,...)
5樓:
在建表語句中加入
id int identity(0,1) not null,
mysql 的語句是
id mediumint not null auto_increment, 你的
已經有了啊
6樓:匿名使用者
就我所知這個好像無法實現,就算你自己編譯mysql恐怕也很難。因為last_insert_id()這個內建的函式返回最近一次插入的自增長id,當沒有符合條件的id時,它返回0,所以如果自增長從0開始的話,這個返回值就很難判定到底是插入了一條自增長id為0的記錄還是沒有符合條件的記錄了。
7樓:匿名使用者
autoincrement本身就是從1開始計數
mysql不支援臨時表怎麼辦,如何修改mysql臨時表記憶體表的大小限制
內部臨時表有兩種型別 一種是heap臨時表,這種臨時表的所有資料都會存在記憶體中,對於這種表的操作不需要io操作。另一種是ondisk臨時表,顧名思義,這種臨時表會將資料儲存在磁碟上。ondisk臨時表用來處理中間結果比較大的操作。如果heap臨時表儲存的資料大於max heap table siz...
蝦塘增養機打起來泡沫多要怎麼處理
不知道你的情況嚴不嚴重,有的南美白對蝦塘,一開氧滿堂都是白沫兒,水面都遮住了,人工去撈肯定效率不高,只有讓風自然地將沫兒吹響塘一邊,並停止充氧,這時候在集中處理。另外可能就是水體不夠肥,或者開氧時間太長了。可以試著選用微管充氧機,效果很好。1.處理方法 對蝦養殖中期,飼料質量影響水質,沒有定期平衡菌...
離職時工作群會怎麼處理,辭職過後,工作群是自己退群還是等群主移出?
離職之後,自己的工作群就可以選擇退出了。很多人的一生是會有很多不同的工作的,很多人在辭職之後,都會保留自己的工作群,這樣的做法其實並不對。離職,就代表著和公司沒有了關係,自己的行為不會給公司帶來價值,自己的言語不會為公司造成影響了,這樣的話,還保留這工作群是沒有任何的意義的。在公司工作,是需要很大的...