我需要一些非常简单的东西,由于某种原因,我无法达到这一点。
我也无法惊讶地得到Google的答案。我需要唯一地编号不同表中的条目。我知道MySQL中的AUTO INCREMENT,它将涉及到它。我的情况如下:
如果我有一张像
这样的表格表示例
ID - INTEGER FIRST_NAME - VARCHAR(45) LAST_NAME - VARCHAR(45) PHONE - VARCHAR(45) CITY - VARCHAR(45) STATE - VARCHAR(45) ZIP - VARCHAR(45)
这将是表的设置,其中ID是一个整数,每次将条目插入表时都会自动递增。我需要的是,在将数据插入数据库时,我不想要考虑这个字段。根据我的理解,这将是一个代理键,我可以告诉数据库自动增加,我不必将它包含在INSERT语句中
所以,而不是:
INSERT INTO EXAMPLE VALUES (2,'JOHN','SMITH',333-333-3333,'NORTH POLE'....
我可以省略第一个ID列,然后写下类似的内容:
INSERT INTO EXAMPLE VALUES ('JOHN','SMITH'.....etc)
注意我不必定义ID列......
我知道这是一项非常常见的任务,但由于某些原因,我无法深究它。
我正在使用MySQL,只是为了澄清。
非常感谢
答案 0 :(得分:3)
如图所示here制作ID
auto_increment
。插入行时,您不必为auto_increment
字段提供值,DB将为您提供。请注意,在这种情况下,您仍然必须使用insert
语法,以便提供字段的名称,而您只需省略ID
字段。
答案 1 :(得分:1)
我不知道mysql,但是在SQL Server中你需要指定你在插入中输入的字段(在所有情况下你都应该这样做作为最佳实践)。
你试过吗
insert into Example(field1, field2)
values ('John', 'Smith')
答案 2 :(得分:1)
此:
INSERT INTO EXAMPLE VALUES ('JOHN','SMITH'.....etc)
...将返回MySQL错误#1136,因为表中的列数与VALUES
子句中指定的列数不匹配。所以你有两个选择:
使用NULL
填写自动增量列值。 IE:
INSERT INTO EXAMPLE VALUES (NULL, 'JOHN','SMITH'.....etc)
指定要为其提供值的表的列列表。 IE:
INSERT INTO EXAMPLE
(FIRST_NAME, LAST_NAME, PHONE, CITY, STATE, ZIP)
VALUES
('JOHN','SMITH'.....etc)