整数代理键?

时间:2010-06-01 20:38:53

标签: sql mysql database

我需要一些非常简单的东西,由于某种原因,我无法达到这一点。

我也无法惊讶地得到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,只是为了澄清。

非常感谢

3 个答案:

答案 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子句中指定的列数不匹配。所以你有两个选择:

  1. 使用NULL填写自动增量列值。 IE:

    INSERT INTO EXAMPLE VALUES (NULL, 'JOHN','SMITH'.....etc)
    
  2. 指定要为其提供值的表的列列表。 IE:

    INSERT INTO EXAMPLE 
      (FIRST_NAME, LAST_NAME, PHONE, CITY, STATE, ZIP)
    VALUES 
      ('JOHN','SMITH'.....etc)
    
相关问题