2012-10-05 25 views
8

ho creare una tabella e la sequenza al fine di sostituire l'identità nella tabella che uso di SQL Server 2012 Express, ma ottengo questo errore mentre cercavo di inserire i dati nella tabellaSQL Server 2012 sequenza

Msg 11719 , Livello 15, Stato 1, Linea 2
VALORE SUCCESSIVO per la funzione non è consentito nei limiti di controllo, oggetti predefiniti, colonne calcolate, visualizzazioni, funzioni definite dall'utente, aggregati definiti dall'utente, tipi di tabella definiti dall'utente, sotto- query, espressioni di tabella comuni o tabelle derivate .

codice T-SQL:

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

Questo è il mio tavolo:

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

e questa è la mia sequenza:

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

risposta

6

la sintassi inserto sembra essere sbagliato. Stai tentando di utilizzare un'istruzione SELECT all'interno della sezione VALUES della tua query. Se si desidera utilizzare SELECT quindi utilizzare:

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

Vedi SQL Fiddle with Demo

ho cambiato la sintassi INSERT INTO VALUES-INSERT INTO ... SELECT. L'ho usato perché stai selezionando il prossimo valore della sequenza.

Tuttavia, se si desidera utilizzare il INSERT INTO.. VALUES, si dovrà rimuovere il SELECT dalla query:

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

Vedi SQL Fiddle with Demo

Entrambi questi INSERT il record nella tabella.

0

provare questo:


-Con un tavolo

crea l'identificativo sequenza start wit h 1 incremento di 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; 

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