我正在使用Scriptella進行ETL操作,使用自動生成的id引用了許多表。我想重新使用這些編號,而不使用子查詢,這是ETL文件的我的腳本片段:Scriptella - 如何獲取和重新使用自動生成的ID?
<script connection-id="out" if="rownum>1">
SELECT nextval('SQC_CLASE') AS claseId;
INSERT INTO zoologia.clase VALUES(?claseId, ?phylumId, ?clase, ?subclase, ?infraclase, true);
SELECT nextval('SQC_ORDEN') AS ordenId;
INSERT INTO zoologia.orden VALUES(?ordenId, ?claseId, ?orden, ?suborden, true);
SELECT nextval('SQC_SUPERFAMILIA') AS superfamiliaId;
INSERT INTO zoologia.superfamilia VALUES(?superfamiliaId, ?ordenId, ?superfamilia, true);
SELECT nextval('SQC_FAMILIA') AS familiaId;
INSERT INTO zoologia.familia VALUES(?familiaId, ?superfamiliaId, ?familia, ?subfamilia, ?tribu, true);
SELECT nextval('SQC_GENERO') AS generoId;
INSERT INTO zoologia.genero VALUES(?generoId, ?familiaId, ?genero, true);
SELECT nextval('SQC_ESPECIE') AS especieId;
INSERT INTO zoologia.especie VALUES(?especieId, ?generoId, ?especie, ?subespecie, ?variedad, ?genero, true);
</script>
這顯然是錯誤的,因爲SELECT
不能腳本內執行,對不對?我不確定如何在沒有子查詢的情況下做到這一點。我正在使用PostgreSQL。
編輯: 我想要實現的是,例如,獲取第一個表的插入中使用的自動生成的id的值,以便在第二個表的插入中使用它,因爲應該引用記錄
*爲什麼*你想重新使用刪除項目的ID? –
...爲什麼不使用子查詢?你說過「不使用子查詢」,而不是*爲什麼*。 –