我試圖用下面的代碼構建表 - 我創建表時沒有錯誤,我可以看到結構並且它顯示IDENTITY_INSERT
設置爲ON
。插入時生成標識插入錯誤(不在代碼中)
CREATE TABLE lt_percent_cs
(
id_key INT IDENTITY PRIMARY KEY,
customer_no INT ,
season INT,
percentage DECIMAL,
created_by VARCHAR(15) NULL,
create_dt DATETIME NULL,
last_updated_by VARCHAR(15) NULL,
last_update_dt DATETIME NULL,
create_loc VARCHAR(16) NULL
) ON [primary]
SET ANSI_PADDING OFF
GO
ALTER TABLE [dbo].lt_percent_cs
ADD CONSTRAINT [lt_percent_created_by]
DEFAULT (user_name()) FOR [created_by]
GO
ALTER TABLE [dbo].lt_percent_cs
ADD CONSTRAINT [lt_percent_create_dt]
DEFAULT (getdate()) FOR [create_dt]
GO
ALTER TABLE [dbo].lt_percent_cs
ADD CONSTRAINT [lt_percent_create_loc]
DEFAULT [dbo].fs_location() FOR [create_loc]
GO
SET IDENTITY_INSERT lt_percent_cs ON
當我嘗試插入數據(通過應用程序而不是通過代碼)時,出現以下錯誤。
Last Error: Database update failed:
dataobject=sqlca.sqlerrtext=SQLSTATE = 42000
Microsoft OLE DB Provider for SQL Server
Cannot insert explicit value for identity column in table 'lt_percent_cs' when IDENTITY_INSERT is set to OFF.No changes made to database.
INSERT INTO lt_percent_cs (id_key, customer_no, season, percentage)
VALUES (54891, 80055514, 2017, 50)sqlca.sqldbcode=544
sqlsyntax:
INSERT INTO lt_percent_cs (id_key, customer_no, season, percentage) VALUES (54891, 80055514, 2017, 50)row:1 [nvo_ds_database.uf_update.34 (544)]
當我運行在SQL Server Management Studio中的腳本,我要補充,它的工作原理沒有問題,也不會產生錯誤。
INSERT INTO lt_percent_cs (id_key, customer_no, season, percentage)
VALUES (54891, 80055514, 2017, 50)
有什麼想法?從Insert語句,因爲id_key是身份
奇怪的是,插入按原樣工作 - 但應用程序的前端打破了,但您確實給了我一個有趣的想法。 – Elizabeth
我寫的腳本會發生什麼 - 使用大量的數據,列是一個標識,它只是將數據導入到表中,併爲每行創建一個新的標識。但是,應用程序的前端與其構建的方式是,它調用自己的過程來創建基於自己的規則的ID值,我不能使用身份(這是愚蠢的) - 所以我現在必須寫一個遊標使用系統創建所有ID值的過程。 – Elizabeth
我明白你在做什麼......你正在研究什麼樣的應用程序? – maSTAShuFu