如果我将数据库列设置为自动编号主键字段,自动编号功能是否会阻止这些值可修改?
或者列的主键性质是否使其不可修改?
两个?既不?
答案 0 :(得分: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 :(得分:2)
都不是。您可以随意修改它。将列设置为自动增量只是指定新行的默认值,即它。之后,它就像一个普通的列。
编辑:显然,对于SQL Server,情况并非如此,但您没有指定,所以我只是选择了流行的答案。
答案 2 :(得分:1)
你的意思是自动增量吗?
在MS-Sql中,没有 在mysql中是(可能取决于引擎)
答案 3 :(得分: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;
sqlite(请参阅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;