0

Oracleで次のクエリがあります:

INSERT INTO table2 
(ID,Name,Address,MOL)
SELECT table2.ID,table2.Name,table2.Address,’sometext’
FROM table2
WHERE table2.ID=1000;

列 ID がmysequencesequenceを呼び出したときに、このクエリを実装したいと考えています。誰かが解決策を知っていますか?ありがとう!

4

2 に答える 2

4
INSERT INTO table2 
(ID,Name,Address,MOL)
SELECT mysequence.nextval,table2.Name,table2.Address,’sometext’
FROM table2
WHERE table2.ID=1000;
于 2013-04-09T19:04:20.903 に答える
2

もう 1 つの方法は、次のシーケンス値を挿入するトリガーを作成することです。

CREATE OR REPLACE TRIGGER myschema.table2_ins_trg
   BEFORE INSERT ON myschema.table2 FOR EACH ROW
   WHEN (New.ID IS NULL) 
BEGIN
  SELECT myschema.mysequence.Nextval INTO :New.ID FROM dual;
END;

次に、挿入時にIDを省略します。

INSERT INTO table2 
  (Name, Address, MOL)
SELECT table2.Name, table2.Address, 'sometext'
  FROM table2
 WHERE table2.ID = 1000;

GUI ツールを使用して挿入を行う場合、ID を空白のままにすると、次のシーケンス値が自動的に入力されるため、この方法が気に入っています。

于 2013-04-09T19:20:27.860 に答える