2012-10-05 38 views
8

tôi có thể tạo một bảng và trình tự để thay thế bản sắc trong bảng tôi sử dụng SQL Server 2012 Express nhưng tôi nhận được lỗi này trong khi tôi cố gắng để chèn dữ liệu vào bảngSQL Server 2012 chuỗi

Msg 11.719 , Cấp độ 15, Trạng thái 1, Dòng 2
Giá trị TIẾP THEO CHO chức năng không được phép trong các ràng buộc kiểm tra, đối tượng mặc định, cột được tính toán, lượt xem, hàm do người dùng xác định, tổng hợp do người dùng xác định, người dùng định nghĩa loại bảng, phụ truy vấn, biểu thức bảng phổ biến hoặc các bảng có nguồn gốc.

mã T-SQL:

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

Đây là bàn của tôi:

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

và đây là chuỗi của tôi:

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

Trả lời

6

cú pháp chèn của bạn dường như sai rồi. Bạn đang cố gắng sử dụng câu lệnh SELECT bên trong phần VALUES truy vấn của bạn. Nếu bạn muốn sử dụng SELECT sau đó bạn sẽ sử dụng:

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

Xem SQL Fiddle with Demo

Tôi đã thay đổi cú pháp INSERT INTO VALUES-INSERT INTO ... SELECT. Tôi đã sử dụng điều này vì bạn đang chọn giá trị tiếp theo của chuỗi.

Tuy nhiên, nếu bạn muốn sử dụng INSERT INTO.. VALUES, bạn sẽ phải loại bỏ các SELECT từ truy vấn:

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

Xem SQL Fiddle with Demo

Cả hai sẽ INSERT kỷ lục vào bảng.

0

Hãy thử điều này một:


-Với một bảng

tạo ra chuỗi thứ tự bắt đầu wit h 1 tăng thêm 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; 

------------------------------ 
Các vấn đề liên quan