次のコードでテーブルを作成しようとしています - テーブルを作成するときにエラーが発生せず、 ON
。(コードではなく)挿入時にIDインサートエラーが生成されています
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)
奇妙なのは、インサートがそのまま動作するということですが、アプリケーションのフロントエンドが壊れてしまいますが、あなたは私に興味深い考えを与えました。 – Elizabeth
私が書いたスクリプトは何ですか?データをテーブルにインポートしたIDである大量のデータを取得し、各行に対して新しいIDを作成しました。しかし、アプリケーションのフロントエンドは、それ自身のプロシージャを呼び出して独自のルールに基づいてID値を作成し、アイデンティティ(愚かです)を使用することはできません - 私は今カーソルを書く必要がありますすべてのID値を作成するためにシステムが行う手順を使用します。 – Elizabeth
あなたは何をしようとしているのか見ています...あなたはどんなアプリケーションを使っていますか? – maSTAShuFu