我是SQL的新手,对于如何在具有自动增量列的表中插入行有疑问。在我的脚本中,我创建了表
CREATE TABLE orgs ( O_Id int NOT NULL identity(1,1), org varchar (255) NOT NULL, PRIMARY KEY (O_Id) );
应该看起来像
orgs
-----------------------------------------------------
O_Id | orgname
-----------------------------------------------------
1 | "StackOverflow"
-----------------------------------------------------
2 | "Madoff Investments"
但是,我不知道如何在此表中插入行。 W3Schools显示语法
INSERT INTO table_name (column1,column2,column3,...) VALUES (value1,value2,value3,...);
但我不确定当其中一列自动递增时如何使用它。我试过了
INSERT INTO orgs (O_id, orgname) VALUES (DEFAULT, 'StackOverflow');
但得到错误
不允许使用DEFAULT或NULL作为显式标识值。
我也试过覆盖,
INSERT INTO orgs (O_id, orgname) VALUES (1, 'StackOverflow');
但得到错误
无法在表'orgs'中为identity列插入显式值 IDENTITY_INSERT设置为OFF。
我该怎么办?
答案 0 :(得分:2)
insert orgs
(orgname)
values
('StackOverflow')
这是IDENTITY指定的好处;这些值会递增并自动为您分配。
现在,如果您确实需要插入特定值(例如,您使用已知数据或其他东西重新播种模板数据库),您可以执行以下操作:
set @@IDENTITY_INSERT orgs ON
insert orgs
(O_id, orgname)
values
(1, 'StackOverflow')
set @@IDENTITY_INSERT orgs OFF
为该表设置@@IDENTITY_INSERT
到ON
意味着允许您设置特定值。通常情况下,你不会这样做。
答案 1 :(得分:0)
语法时才:
INSERT orgs
VALUES('nextOrg')
如果该字段是auto-inc,则只需在INSERT
命令上忽略它。