2016-12-12 13 views
0

テーブルの1つの列にレコードを1つだけ挿入することはできますか?IDENTITY列のあるテーブルにレコードを挿入する方法

私は列を持つテーブルEMP_MASTERTBLを持っ

私はこのコード/クエリ

INSERT INTO EMP_MASTERTBL (MASTERID, JOBTITLE) VALUES ('7634', 'Manager') 

を使用しかし、私は、このエラーメッセージが表示されましたので、私は1人の特定の従業員に新しいジョブ・タイトルを追加する必要が

MASTERID | USERID | EMPNO | LASTNAME | FIRSTNAME | REGION | COUNTRY | ENTITY | LOCATION | JOBTITLE 

テーブルのID列に明示的な値を挿入できません。 'EMP IDENTITY_INSERTがOFFに設定されている場合は_MASTERTBLとなります。

特定の従業員に別の役職を追加するだけです。従業員は複数の役職を持つことができます。

ありがとうございます。

+0

これは 'SQL-Server'であれば、それはテーブルのため' EMP_MASTERTBL'が '' IDENTITY(...、...)で設定した列 'MASTER_ID'を持っていますそれによって値を挿入することができなくなります。このリンクを確認してください:https://msdn.microsoft.com/en-us/library/ms188059.aspx – DVT

+0

MySqlはSQL Serverと全く異なるものです – Plutonix

+3

データモデルは従業員1人当たり1タイトルのみをサポートしています。リレーショナル設計では、1人の従業員が複数のタイトルを持つことを可能にするために、1対多の関係のための別のテーブルが必要です。 –

答えて

0

カラムをnullでないと定義した場合は特にそうでないかもしれません。タイトルを追加する最も良い方法は、次のようなupdate文を使用することです:UPDATE EMP_MASTERTBL SET JOBTILE = 'マネージャ' WHERE USERID = 'EMPLOYEE'S_USERID'; 注意:useridが整数の場合は、useridの引用符は使用しないでください。

+0

しかし、それは最初の役職だけを変更し、新しい役職は決して追加されません。右? – chobowski

+0

ええ、私は質問のその特定の詳細を逃したと思います。既存のものに新しいタイトルを追加することが可能かどうかわからない – David

2

SQL Server Studioでは、INSERTステートメントの前にこのコマンドを実行してください。これを実行するには、このテーブルに対するアクセス許可がALTERである必要があります。

SET IDENTITY_INSERT EMP_MASTERTBL ON; 
+0

すでにこれを試してみましたが、INSERT INTO EMP_MASTERTBL(MASTERID、JOBTITLE)VALUES( '7634'、 'Manager')、このエラーは 'PRIMARY KEY制約' PK_EMP_MASTERTBL 'に違反しています。オブジェクト 'dbo.EMP_MASTERTBL'に重複キーを挿入できません。重複キーの値は(76237)です。 ステートメントが終了しました。 – chobowski

+0

それは別のエラーです。これは、テーブルの項目MASTERIDに値76237のレコードがすでに存在していることを意味します。 (PRIMARY KEY違反)。 – DVT

+1

なぜそれをする必要がありますか?この場合、列を「IDENITY」として定義することはできません。むしろ、挿入リストからID列を削除する必要があります。 – Rahul

2

自動生成されるため、MASTERIDに値を設定しないでください。この方法を試してください。

INSERT INTO EMP_MASTERTBL (JOBTITLE) VALUES ('Manager') 
+0

私はこの回答をもっと好きで、それは私にははるかに正しいです – Rahul

+0

jobtitleは追加されますが、別のmasteridや従業員に追加されますか? – chobowski

+0

この問題を解決する方法はたくさんあります。エラーメッセージに注意する必要があります。 – Romeo

0
SET IDENTITY_INSERT EMP_MASTERTBL ON; 
GO 
INSERT INTO EMP_MASTERTBL (MASTERID, JOBTITLE) VALUES ('7634', 'Manager') 
GO 
SET IDENTITY_INSERT EMP_MASTERTBL OFF; 
関連する問題