1
我有一個Oracle 12c數據庫。有一個名爲Artifacts的表格。該表是這樣的:Oracle,JDBI @SqlBatch - 獲取INSERT觸及的所有行
ID | BONETYPE | AGE
ID
總是生成爲身份NUMBER(12,0)
等將被插入工件時,數據庫分配的。 BONETYPE
& AGE
只是字符串。對於BONETYPE
& AGE
有一個獨特的限制。
我有一個數據庫查詢,插入缺失的記錄,看起來像這樣:
INSERT /*+ IGNORE_ROW_ON_DUPKEY_INDEX(Artifacts, U_ARTIFACTS) */
INTO Artifacts ("BONETYPE", "AGE")
VALUES ('dinosaur', '800000');
怪異提示IGNORE_ROW_ON_DUPKEY_INDEX
,是因爲其中一些文物可能已經插入。
該數據庫查詢實際上是通過一個JDBI查詢發出:
@SqlBatch("INSERT /*+ IGNORE_ROW_ON_DUPKEY_INDEX(Artifacts, U_ARTIFACTS) */\n" +
"INTO Artifacts (\"BONETYPE\", \"AGE\")\n" +
"VALUES (:BoneType, :Age)")
@GetGeneratedKeys(columnName = "ID", value = OracleGeneratedKeyMapper.class)
int[] putArtifacts(@Bind("BoneType") List<String> boneTypes, @Bind("Age") List<String> ages);
這是出於性能方面的一個@SqlBatch
。
我現在的問題是我想知道所有受影響行的IDs
,包括因爲IGNORE_ROW_ON_DUPKEY_INDEX
提示而被忽略的行。我怎麼做?
@GetGeneratedKeys
只能得到缺失記錄行的IDs
。