2012-10-05 40 views
8

que crear una tabla y la secuencia con el fin de sustituir la identidad en la tabla de uso de SQL Server 2012 Express, pero me sale este error mientras trataba de insertar datos en la tablaSQL Server 2012 secuencia

Msg 11719 , Nivel 15, estado 1, línea 2
VALOR PRÓXIMO PARA la función no está permitido en las restricciones de verificación, objetos predeterminados, columnas calculadas, vistas, funciones definidas por el usuario, agregados definidos por el usuario, tipos de tabla definidos por el usuario, consultas, expresiones de tablas comunes o tablas derivadas.

código T-SQL:

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

Esta es mi mesa:

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

y este es mi secuencia:

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

Respuesta

6

Su sintaxis inserción parece ser incorrecto. Está intentando utilizar una declaración SELECT dentro de la sección VALUES de su consulta. Si desea utilizar SELECT entonces que va a utilizar:

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

Ver SQL Fiddle with Demo

He cambiado la sintaxis desde INSERT INTO VALUES a INSERT INTO ... SELECT. Lo usé porque estás seleccionando el siguiente valor de la secuencia.

Sin embargo, si desea utilizar el INSERT INTO.. VALUES, usted tendrá que quitar el SELECT de la consulta:

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

Ver SQL Fiddle with Demo

Ambos le INSERT el registro en la tabla.

0

prueba este:


-Con una mesa

Crear secuencia de idsecuencia Comenzar ingenio h 1 incremento por 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; 

------------------------------ 
Cuestiones relacionadas