2012-10-05 105 views
8

我爲了在我使用SQL Server 2012 Express中的表來代替身份創建表和序列,但我得到這個錯誤,而我試圖將數據插入到表SQL Server 2012的序列

消息11719 ,級別15,狀態1,行2
在檢查約束,默認對象,計算列, 視圖,用戶定義的函數,用戶定義的聚合,用戶定義的 表類型,子表格類型中不允許使用NEXT VALUE FOR函數。查詢,公用表表達式或派生的表。

T-SQL代碼:

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 

回答

6

你插入語句似乎是錯誤。您正試圖在查詢的VALUES部分中使用SELECT聲明。如果你想使用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 VALUESINSERT 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記錄到表中。

0

試試這個:


- 隨着表

創建序列idsequence 開始機智h 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; 

------------------------------