14

假设我有一个用户表,id列是主键并自动递增。

我想尝试通过以下语句手动添加用户:

INSERT INTO table_name (id, username, password)  
VALUES (?, Mike, Mike);

但我不想指定?值,只想添加到下一行。

谢谢大家,我忘记将 id 列设置为自动递增。现在可以了。

4

4 回答 4

15

所以只是不要使用它......这样做......

并确保使用单引号插入strings

INSERT INTO table_name (username, password)
VALUES ('Mike', 'Mike');

正如您所说,您的字段是auto incremented,SQL会自动将id字段的值增加1

于 2012-10-07T16:24:23.593 回答
11

如果要手动将值插入到自动递增的列中,可以使用 sql 的 IDENTITY_INSERT。例如

SET IDENTITY_INSERT MyTable ON
insert into MyTable(id, name) values (1,'asdf');
insert into MyTable(id, name) values (3,'htgfds');
insert into MyTable(id, name) values (123,'dsfg');
SET IDENTITY_INSERT MyTable OFF

你可以在这里阅读更多 IDENTITY_INSERT

于 2012-10-07T16:27:56.650 回答
1

如果 id 是一个自动递增的值,只需将该列排除在插入之外,它将填充自动递增的值。例如来自 BOL http://msdn.microsoft.com/en-us/library/aa933196(v=SQL.80).aspx

CREATE TABLE new_employees
(
 id_num int IDENTITY(1,1),
 fname varchar (20),
 minit char(1),
 lname varchar(30)
)

INSERT new_employees
   (fname, minit, lname)
VALUES
   ('Karin', 'F', 'Josephs')

INSERT new_employees
   (fname, minit, lname)
VALUES
   ('Pirkko', 'O', 'Koskitalo')
于 2012-10-07T16:25:18.893 回答
1

这应该为您完成工作:

INSERT INTO table_name (username, password)
VALUES('username_u','password_p');

自动增量值将由 SQL 自动添加。

于 2012-10-07T16:30:09.677 回答