2009-05-30 74 views
0

如果我將數據庫列設置爲自動編號主鍵字段,自動編號功能是否會阻止這些值可修改?是否可以更改自動增量整數主鍵字段的值?

還是該列的主鍵性質使其不可修改?

Both?都不是?

+1

爲了達到最佳效果說你正在使用什麼數據庫。 – 2009-05-30 04:10:32

+0

我認爲這是一個足夠普遍的原則,它將全面適用。也許不是那麼簡單? – eggdrop 2009-05-30 04:22:50

+1

當你嘗試時發生了什麼? – 2009-05-30 05:02:55

回答

2

都不是。你可以修改所有你想要的。將列設置爲自動增量只是指定新行的默認值,就是這樣。之後,它就像一個普通的列一樣。

編輯:顯然這不適用於SQL Server,但你沒有指定,所以我只是去與流行的答案。

4

一如既往,這取決於您的數據庫。但是,答案可能不是。

在SQL Server中,你從手動插入主鍵爲標識列的限制,除非您使用以下命令:

SET IDENTITY_INSERT [dbo].[MyTable] ON 
INSERT INTO [dbo].[MyTable] (id, name) VALUES (1000, 'Foo') 
SET IDENTITY_INSERT [dbo].[MyTable] OFF 
1

你的意思是自動遞增?

在MS-SQL沒有,
在MySQL中是(取決於發動機)

1

這不是DB無關。然而,MySQL和SQLite的(例如)允許你修改自動增量主鍵:

的mysql:

create table foo (id INTEGER AUTO_INCREMENT, PRIMARY KEY(id)); 
insert into foo values (null); 
select * from foo; 
update foo set id = 2 where id = 1; 
select * from foo; 

源碼(見http://www.sqlite.org/faq.html#q1什麼AUTOINCREMENT實際上意味着):

create table foo(id INTEGER PRIMARY KEY AUTOINCREMENT); 
insert into foo VALUES(null); 
select * from foo; 
update foo set id = 2 where id = 1; 
select * from foo; 
相關問題