2012-10-05 10 views
8

erstelle ich eine Tabelle und Reihenfolge, um Identität in der Tabelle zu ersetzen, ich SQL Server 2012 Express verwenden, aber ich habe diesen Fehler, während ich versuchte, Daten auf den TischSQL Server 2012-Sequenz

Msg 11719 einfügen Level 15, Status 1, Zeile 2
NEXT VALUE FOR-Funktion ist nicht im Zaum Einschränkungen erlaubt, Standardobjekte, berechnete Spalten, Ansichten, benutzerdefinierte Funktionen, benutzerdefinierte Aggregate, benutzerdefinierten Tabellentypen, sub- Abfragen, allgemeine Tabellenausdrücke oder abgeleitete Tabellen.

T-SQL-Code:

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

Dies ist meine Tabelle:

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

und dies ist meine Sequenz:

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

Antwort

6

Ihre Insert-Syntax zu sein scheint falsch. Sie versuchen, eine SELECT-Anweisung innerhalb des Abschnitts VALUES Ihrer Abfrage zu verwenden. Wenn Sie SELECT verwenden möchten, dann werden Sie verwenden:

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

Siehe SQL Fiddle with Demo

ich die Syntax INSERT INTO VALUES-INSERT INTO ... SELECT geändert. Ich habe das verwendet, weil Sie den nächsten Wert der Sequenz auswählen.

Wenn Sie jedoch die INSERT INTO.. VALUES verwenden möchten, werden Sie die SELECT aus der Abfrage entfernen:

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

Siehe SQL Fiddle with Demo

Beide werden den Datensatz in der Tabelle INSERT.

0

versuchen diese:


-mit einem Tisch

Sequenz ID erstellen Start wit h 1 Erhöhung um 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; 

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