0

データを挿入するときに、主キーの値を取得して別の列に配置するにはどうすればよいですか?

ここに私のテーブルスキーマがあります:

CREATE TABLE IF NOT EXISTS [MyTable] (
  [ID] INTEGER  NOT NULL PRIMARY KEY AUTOINCREMENT,
  [custom_ID] INTEGER NULL, 
  [Name] VARCHAR (200) NULL) 

私がこれまでに持っているクエリは次のとおりです。

INSERT INTO MyTable (custom_ID, Name)
values (
  ' {Here I need to get the primary key value, and then put it in custom_ID} ', 
  'someName')

ありがとう!

4

4 に答える 4

0

次のようなことを試してください:

insert [Order] (col1, col2, ...) values ('val1', 'val2', ...) -- Note: no ID is specified
declare @id int = scope_identity()
insert OrderDetail (order_id, col1, ...) values (@id, 'val1', ...)
于 2013-10-24T21:11:13.360 に答える
0

クリスが提案したように:

CREATE TRIGGER MyTable_CustomID AFTER INSERT ON MyTable WHEN NEW.Custom_ID=NULL BEGIN
    UPDATE MyTable SET Custom_ID=NEW.Id WHERE ROWID=NEW.ROWID;
END;
于 2013-10-25T07:45:13.700 に答える
0

私が言える限りでは、に基づいてカスタム ID を生成しようとしていると言えますPK。私の場合のようにPK = 1、カスタム Id が必要ですABCDEF/000/1。したがって、その場合はId、挿入クエリによる即時生成を選択してから、トリガー内または挿入ステートメントの直後に更新ステートメントを実行する必要があります。SQL lite であるため、Sql Server の Scope_Identity() または @@Identity に似た ID を取得するには、少し調査する必要があります。

于 2013-10-25T07:53:15.483 に答える