SQL 自增字段的修改

2021-04-19 02:31:39 字數 1081 閱讀 2826

sql2005中自增欄位預設情況下是沒法修改的

那麼在資料遷移中怎麼解決自增字段修改的問題呢?

在sql中使用 identity_insert 開關 允許將顯式值插入表的標識列中。

identity_insert 開關 起到的作用是開啟自增字段標識列,允許插入資料

例 表book 有自增欄位book_id 和 book_name 兩個字段

插入資料一般是

insert into book  (book_name)values('testidentity1')

如果使用

insert into book  (book_id,book_name)values(1000,'testidentity1')

就會出錯

使用identity_insert 開關

--開啟identity_insert

set identity_insert testidentity on

--"自增字段"已經可以插入自定義的編號了

insert into book  (book_id,book_name)values(1000,'testidentity1')

--關閉identity_insert

set identity_insert testidentity off

開啟後一定要關閉,不然

insert into book  (book_name)values('testidentity1')

語句會出錯

上面只是插入,開啟後是不能執行update 的語句的,那麼怎麼修改呢?

我採用的方法是先刪除要修改的那條記錄,然後插入

--刪除要修改的記錄

delete  from book where book_id=10000

--開啟

set identity_insert dbo.book_info on

--查入自定義記錄

insert into book(book_id, book_name) values(100,'testidentity4')

--關閉

set identity_insert dbo.book_info off

mysql 自增字段原理 MySQL自增字段暴增

找了點資料 從網上看到一篇文章,mysql在檢測到表中有損壞的記錄時,會自動修復,為了保證資料的完整性,mysql會以空格 0x20 寫進磁碟來完成修復。根據欄位的型別,自增字段的長度不同,所允許的最大值也不同。見下 int 10 unsigned型別最大值十進位制為4294967295,十六進製制...

oracle自增字段

在oracle中sequence就是所謂的序列號,每次取的時候它會自動增加,一般用在需要按序列號排序的地方。1 create sequence 你首先要有create sequence或者create any sequence許可權,create sequence emp sequence incr...

oracle自增字段

sqlserver 和mysql都有自增長的功能,但是oracle必須結合sequence序列 觸發器才能夠實現自動增長 1 create table table name id number,name varchar2 50 2 create sequence sequence name minv...