Целочисленный суррогатный ключ? - PullRequest
0 голосов
/ 02 июня 2010

Мне нужно что-то очень простое, по какой-то причине я не могу достичь этого.

Я также не смог найти ответ на удивление Google. Мне нужно однозначно пронумеровать записи в разных таблицах. Я знаю об АВТОМАТИЧЕСКОМ УВЕЛИЧЕНИИ в MySQL и что это будет вовлечено. Моя ситуация будет выглядеть следующим образом:

Если бы у меня был стол типа

Таблица ПРИМЕР

   ID - INTEGER
   FIRST_NAME - VARCHAR(45)
   LAST_NAME - VARCHAR(45)
   PHONE - VARCHAR(45)
   CITY - VARCHAR(45)
   STATE - VARCHAR(45)
   ZIP - VARCHAR(45)

Это будет настройка для таблицы, где ID - это целое число, которое автоматически увеличивается каждый раз, когда запись вставляется в таблицу. Мне нужно то, что я не хочу учитывать это поле при вставке данных в базу данных. Насколько я понимаю, это был бы суррогатный ключ, который я могу сказать базе данных автоматически увеличивать, и мне не нужно включать ее в ЗАЯВЛЕНИЕ НА ВСТАВКУ

Итак, вместо:

 INSERT INTO EXAMPLE VALUES (<b>2</b>,'JOHN','SMITH',333-333-3333,'NORTH POLE'....

Я могу пропустить первый столбец идентификатора и просто написать что-то вроде:

INSERT INTO EXAMPLE VALUES ('JOHN','SMITH'.....etc)

Обратите внимание, что мне не нужно определять столбец идентификатора ...

Я знаю, что это очень распространенная задача, но по какой-то причине я не могу до конца разобраться.

Я использую MySQL, просто чтобы уточнить.

Большое спасибо

Ответы [ 3 ]

3 голосов
/ 02 июня 2010

Сделать ID auto_increment как показано здесь . Вам не нужно указывать значение для поля auto_increment при вставке строки, БД предоставит его вам. Обратите внимание, что в этом случае вам все равно придется использовать синтаксис insert, чтобы указать имена полей, и вы просто пропустите поле ID.

1 голос
/ 02 июня 2010

Это:

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)
    
1 голос
/ 02 июня 2010

Я не знаю, что такое mysql, но в SQL Server вам нужно было бы указать поля, в которые вы вставляли вставку (что в любом случае вам следует делать в любом случае, как лучший метод).

пробовали ли вы

insert into Example(field1, field2)
values ('John', 'Smith')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...