2012-10-05 35 views
8

ben SQL Server 2012 Express kullanmak tabloda kimliğini değiştirmek için bir masa ve diziyi yaratmak ama masayaSQL Server 2012 dizisi

Msg 11719 verilerini eklemek için çalışırken, bu hatayı alıyorum Düzey 15, Durum 1, Satır 2
NEXT VALUE FOR (İLERİ DEĞER) denetim kısıtlamalarına, varsayılan nesnelere, hesaplanmış sütunlara, görünümlerine, kullanıcı tanımlı işlevlere, kullanıcı tanımlı kümelere, kullanıcı tanımlı tablo türlerine izin verilmez. sorgular, ortak tablo ifadeleri veya türetilmiş tabloları.

T-SQL kodu: Bu benim tablo

insert into Job_Update_Log(log_id, update_reason, jobid) 
values((select next value for Job_Log_Update_SEQ),'grammer fixing',39); 

geçerli:

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) 
); 

ve bu benim dizisidir:

CREATE SEQUENCE [dbo].[Job_Log_Update_SEQ] 
AS [int] 
START WITH 1 
INCREMENT BY 1 
NO CACHE 
GO 

cevap

6

Kişisel insert sözdizimi olarak görünmektedir yanlış. Sorunuzun VALUES bölümünün içinde SELECT ifadesini kullanmaya çalışıyorsunuz. Eğer SELECT kullanmak istiyorsanız o zaman kullanacağız:

insert into Job_Update_Log(log_id,update_reason,jobid) 
select next value for Job_Log_Update_SEQ,'grammer fixing',39; 

ben INSERT INTO VALUES den INSERT INTO ... SELECT sözdizimi değişti SQL Fiddle with Demo

bakınız. Bunu kullandım çünkü dizinin bir sonraki değerini seçiyorsun. Eğer INSERT INTO.. VALUES kullanmak istiyorsanız

Ancak, sorgudan SELECT kaldırmak zorunda kalacak:

insert into Job_Update_Log(log_id,update_reason,jobid) 
values(next value for Job_Log_Update_SEQ,'grammer fixing',39); 

Bunların her ikisi de tabloya kayıt INSERT olacak SQL Fiddle with Demo

bakınız.

0

bu bir deneyin: Bir tablo -Ile


seri numarası oluşturmak h 1 artış 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; 

------------------------------ 
İlgili konular