簡體   English   中英

插入中的行號

[英]rownumber in insert into

我想在其中一列中插入行號。 But since row_number() is a window ( analytic proper to Oracle ) function which can be used only for select statement is there any other way to insert row number.

例如:

INSERT INTO prnr (pm,GEG_ID,ET_ID,fzg_id,nr,id)
VALUES(p_gpm_id,master_rec.geg_id,master_rec.et_id,
       master_rec.fzg_id,row_number() over (partition by master_rec.geg_id));

我想在程序中使用這個插入語句。

嘗試將您的代碼重構為INSERT INTO... SELECT

INSERT INTO prnr (pm, GEG_ID, ET_ID, fzg_id, nr, id)
SELECT p_gpm_id, geg_id, et_id, fzg_id, ROW_NUMBER() OVER (PARTITION BY geg_id),
       -- some 6th column here...
FROM master_rec;

如果您的目標只是簡單地為id列生成順序 integer 值(如注釋中所述),則使用GENERATED ALWAYS AS IDENTITY選項重新創建現有id列,例如

ALTER TABLE prnr DROP COLUMN id;
ALTER TABLE prnr ADD id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM