Последовательность SQL Server 2012
Я создаю таблицу и последовательность, чтобы заменить идентификатор в таблице, использующей SQL Server 2012 Express, но я получаю эту ошибку, пока я пытался вставить данные в таблицу
Msg 11719, уровень 15, состояние 1, строка 2
Функция NEXT VALUE FOR не допускается в контрольных ограничениях, объектах по умолчанию, вычисленных столбцах, представлениях, пользовательских функциях, пользовательских агрегатах, пользовательских типах таблиц, подзапросах, общих табличных выражениях или производных таблицах.
Код T-SQL:
- Вставьте 2 значения из двух разных таблиц в одну таблицу
- SQL Server 2012: Вход в систему PC-NAME \ SQLEXPRESS работает, но не локально / (локально)
- Создать отфильтрованный индекс, не работающий в SQL Server 2012 Express
- Как просмотреть запрос, который использовался для создания таблицы?
- Как изменить имя сервера SQL2012 на localhost?
insert into Job_Update_Log(log_id, update_reason, jobid) values((select next value for Job_Log_Update_SEQ),'grammer fixing',39);
Это моя таблица:
create table Job_Update_Log ( log_id int primary key , update_reason nvarchar(100) , update_date date default getdate(), jobid bigint not null, foreign key(jobid) references jobslist(jobid) );
и это моя последовательность:
CREATE SEQUENCE [dbo].[Job_Log_Update_SEQ] AS [int] START WITH 1 INCREMENT BY 1 NO CACHE GO
- Получить файл .sql из базы данных SQL Server 2012
- Разрешить удаленное подключение только для определенных пользователей
- Как предотвратить «истечение тайм-аута запроса»? (Ошибка SQLNCLI11 '80040e31')
- Получить размер вставленной строки в SQL Server
- СОЗДАТЬ МАСТЕР-КЛЮЧ - Ошибка проверки пароля
- Невозможно создать хранимую процедуру с параметром вывода таблицы
- Почему я не могу подключиться к общему экземпляру SQL Server 2012 LocalDB?
- Создание соединения с MDF-файлом в Visual Studio: «Файл используется»
Просто избавитесь от подзадача в разделе VALUES, например:
insert into Job_Update_Log(log_id,update_reason,jobid) values (next value for Job_Log_Update_SEQ,'grammer fixing',39);
Ссылка: http://msdn.microsoft.com/en-us/library/hh272694%28v=vs.103%29.aspx
Ваш синтаксис вставки кажется неправильным. Вы пытаетесь использовать SELECT
внутри секции VALUES
вашего запроса. Если вы хотите использовать SELECT
вы будете использовать:
insert into Job_Update_Log(log_id,update_reason,jobid) select next value for Job_Log_Update_SEQ,'grammer fixing',39;
См. SQL Fiddle with Demo
Я изменил синтаксис с INSERT INTO VALUES
на INSERT INTO ... SELECT
. Я использовал это, потому что вы выбираете следующее значение последовательности.
Однако, если вы хотите использовать INSERT INTO.. VALUES
, вам нужно будет удалить SELECT
из запроса:
insert into Job_Update_Log(log_id,update_reason,jobid) values(next value for Job_Log_Update_SEQ,'grammer fixing',39);
См. SQL Fiddle with Demo
Оба из них будут INSERT
запись в таблицу.
Попробуй это:
-С таблицей
создать последовательность idsequence с 1 приращением на 3
create table Products_ext ( id int, Name varchar(50) ); INSERT dbo.Products_ext (Id, Name) VALUES (NEXT VALUE FOR dbo.idsequence, 'ProductItem'); select * from Products_ext; /* If you run the above statement two types, you will get the following:- 1 ProductItem 4 ProductItem */ drop table Products_ext; drop sequence idsequence; ------------------------------