9

SQL Server 2012 Expressを使用しているテーブルのIDを置き換えるためにテーブルとシーケンスを作成しましたが、テーブルにデータを挿入しようとするとこのエラーが発生します

メッセージ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
4

3 に答える 3

18

次のように、[値]セクションの副選択を削除するだけです。

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

于 2012-10-05T11:20:20.980 に答える
7

挿入構文が間違っているようです。クエリのセクション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 FiddlewithDemoを参照してください

構文をからに変更し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 FiddlewithDemoを参照してください

これらは両方ともINSERTテーブルに記録されます。

于 2012-10-05T11:16:33.553 に答える
0

これを試してください:


–テーブル付き

create sequence idsequence start with 1 increment by 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;

------------------------------
于 2012-11-16T19:59:39.260 に答える