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...