loading..
Русский    English
17:10
листать

Вставка строк в таблицу, содержащую автоинкрементируемое поле стр. 2

Рассмотрим теперь таблицу с единственным автоинкрементируемым столбцом (SQL Server):

  1. CREATE TABLE test_Identity(
  2.     id int IDENTITY(1,1) PRIMARY KEY
  3. );

Как вставить в нее строки? Попытка не указывать значение

  1. INSERT INTO test_Identity VALUES();
или использовать значение по умолчанию

  1. INSERT INTO test_Identity VALUES(DEFAULT);
к успеху не приводит - ошибка.

Понятно, что мы можем вставить конкретное значение, если отключим счетчик:

  1. SET IDENTITY_INSERT test_Identity ON;
  2. INSERT INTO test_Identity(id) VALUES(5);
  3. SELECT * FROM test_Identity;
но тогда в нем нет для нас никакого смысла.

Уточним вопрос: как вставить в таблицу именно последовательные значения счетчика? Оказывается, что ответ лежит на поверхности, а именно, в стандартном синтаксисе:

  1. SET IDENTITY_INSERT test_Identity OFF;
  2. INSERT INTO test_Identity DEFAULT VALUES;

Вряд ли вы будете использовать DEFAULT VALUES в других случаях, т.к. при наличии первичного ключа воспользоваться значениями по умолчанию для всех столбцов таблицы можно будет только один раз. Тут же мы можем повторить этот оператор столько раз, сколько последовательных значений счетчика нам потребуется добавить в таблицу.

Обратимся теперь к другим СУБД, которые имеют в своем арсенале автоинкрементируемые столбцы.


Страницы: 1 2 3 4 5
Тэги:
ALL AND AUTO_INCREMENT AVG battles CASE CAST CHAR CHARINDEX CHECK classes COALESCE CONSTRAINT Convert COUNT CROSS APPLY CTE DATEADD DATEDIFF DATENAME DATEPART DATETIME DDL DEFAULT DELETE DISTINCT DML EXCEPT EXISTS EXTRACT FOREIGN KEY FROM FULL JOIN GROUP BY Guadalcanal HAVING IDENTITY IN INFORMATION_SCHEMA INNER JOIN insert INTERSECT IS NOT NULL IS NULL ISNULL laptop LEFT LEFT OUTER JOIN LEN maker Больше тэгов
Учебник обновлялся
несколько дней назад
обмен с ак барс банк
©SQL-EX,2008 [Развитие] [Связь] [О проекте] [Ссылки] [Team]
Перепечатка материалов сайта возможна только с разрешения автора.