Oracleで次のクエリがあります:
INSERT INTO table2
(ID,Name,Address,MOL)
SELECT table2.ID,table2.Name,table2.Address,’sometext’
FROM table2
WHERE table2.ID=1000;
列 ID がmysequencesequence
を呼び出したときに、このクエリを実装したいと考えています。誰かが解決策を知っていますか?ありがとう!
INSERT INTO table2
(ID,Name,Address,MOL)
SELECT mysequence.nextval,table2.Name,table2.Address,’sometext’
FROM table2
WHERE table2.ID=1000;
もう 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 を空白のままにすると、次のシーケンス値が自動的に入力されるため、この方法が気に入っています。