国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Oracle Merge Into ORA-00001: unique constaint violated問(wèn)題

這篇具有很好參考價(jià)值的文章主要介紹了Oracle Merge Into ORA-00001: unique constaint violated問(wèn)題。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

最近使用Datax同步進(jìn)行定時(shí)數(shù)據(jù)同步,并在同步完之后進(jìn)行回調(diào)sql進(jìn)行統(tǒng)計(jì)操作。對(duì)應(yīng)的ORACLE表結(jié)構(gòu)如下:

create table DATA_STAT_DAY (
DATA_DATE DATE, 
ID VARCHAR2(2), 
NAME VARCHAR2(2),
CLASSNO VARCHAR2(2),
SCORES NUMBER(16,0)
);

CREATE UNIQUE INDEX IDX_DATA_STAT_DAY ON DATA_STAT_DAY(DATA_DATE, ID, NAME, CLASSNO);

回調(diào)對(duì)應(yīng)的SQL如下:

MERGE INTO DATA_STAT_DAY a
USING (
	SELECT 
	DATA_DATE,'0000' AS ID,NAME,CLASSNO, SUM(SCORES) SCORES
	FROM 
	DATA_STAT_DAY 
	WHERE ID % 2 = 0
	GROUP BY DATA_DATE,NAME,CLASSNO
) b 
ON (a.DATA_DATE = b.DATA_DATE and a.ID = b.ID and a.NAME = b.NAME and a.CLASSNO = b.CLASSNO)
WHEN MATCHED THEN 
	UPDATE SET a.SCORES = b.SCORES
WHEN NOT MATCHED THEN 
	INSERT INTO (a.DATA_DATE,a.ID,a.NAME,a.CLASSNO,a.SCORES)
	VALUES (b.DATA_DATE,b.ID,b.NAME,b.CLASSNO,b.SCORES)

回調(diào)SQL執(zhí)行過(guò)程中,觸發(fā)了?ORA-00001: unique constaint violated 的錯(cuò)誤,其中USING部分的數(shù)據(jù)沒(méi)有重復(fù)的,并且表中也沒(méi)有和USING表中重復(fù)的,但是這里面的NAME和CLASSNO字段是有部分字段為NULL,ID部分有重復(fù)的值,然后這就導(dǎo)致了MERGE INTO的USING 關(guān)聯(lián)的ON條件的時(shí)候判斷為沒(méi)關(guān)聯(lián)上。但是在插入的時(shí)候,唯一索引判斷重復(fù)了,所以對(duì)應(yīng)的USING的數(shù)據(jù)集的ON部分的字段不能有為NULL的,否則會(huì)報(bào)唯一索引沖突的問(wèn)題。

ORACLE的遞歸查詢

SELECT M.MGT_ORG_CODE,
? ? ? ?LPAD(' ', LEVEL * 2, ' ') || M.MGT_ORG_NAME AS MGT_ORG_NAME,
? ? ? ?M.PRNT_MGT_ORG_CODE,
? ? ? ?SYS_CONNECT_BY_PATH(M.MGT_ORG_CODE, '>') AS CODE_PATH,
? ? ? ?REGEXP_SUBSTR(SYS_CONNECT_BY_PATH(M.MGT_ORG_CODE, '>'),'[^>]+',1,1,'i') AS MGT_ORG_C1,
? ? ? ?REGEXP_SUBSTR(SYS_CONNECT_BY_PATH(M.MGT_ORG_CODE, '>'),'[^>]+',1,2,'i') AS MGT_ORG_C2,
? ? ? ?REGEXP_SUBSTR(SYS_CONNECT_BY_PATH(M.MGT_ORG_CODE, '>'),'[^>]+',1,3,'i') AS MGT_ORG_C3,
? ? ? ?REGEXP_SUBSTR(SYS_CONNECT_BY_PATH(M.MGT_ORG_CODE, '>'),'[^>]+',1,4,'i') AS MGT_ORG_C4,
? ? ? ?REGEXP_SUBSTR(SYS_CONNECT_BY_PATH(M.MGT_ORG_CODE, '>'),'[^>]+',1,5,'i') AS MGT_ORG_C5,
? ? ? ?REGEXP_SUBSTR(SYS_CONNECT_BY_PATH(M.MGT_ORG_CODE, '>'),'[^>]+',1,6,'i') AS MGT_ORG_C6,
? ? ? ?CONNECT_BY_ROOT(M.MGT_ORG_CODE) AS ROOT_CODE_VAL,
? ? ? ?CONNECT_BY_ISLEAF AS ISLEAF,
? ? ? ?M.DIST_LV,
? ? ? ?'0' || (LEVEL + 1) AS MGT_LEVEL
? FROM (SELECT T.MGT_ORG_CODE,
? ? ? ? ? ? ? ?T.DIST_LV,
? ? ? ? ? ? ? ?T.PRNT_MGT_ORG_CODE,
? ? ? ? ? ? ? ?T.MGT_ORG_NAME
? ? ? ? ? FROM M_MGT_ORG T
? ? ? ? ?WHERE T.MGT_ORG_TYPE = 'corp'
? ? ? ? ? ?AND T.VALID_FLAG = '02') M
?START WITH M.DIST_LV = '02'
CONNECT BY NOCYCLE PRIOR M.MGT_ORG_CODE = M.PRNT_MGT_ORG_CODE
?ORDER BY M.MGT_ORG_CODE

START WITH:指定起始節(jié)點(diǎn)的條件
CONNECT BY:指定父子行的條件關(guān)系
PRIOR:查詢父行的限定符,格式:prior column1=column2 or column1=prior column2
NOCYCLE:若數(shù)據(jù)表中存在循環(huán)行,那么不添加此關(guān)鍵字會(huì)報(bào)錯(cuò),添加關(guān)鍵字后,便不會(huì)報(bào)錯(cuò),但循環(huán)的兩行只會(huì)顯示其中的第一條
循環(huán)行:該行只有一個(gè)子行,而且子行又是該行的祖先行
CONNECT_BY_ISCYCLE:前置條件:在使用了NOCYCLE之后才能使用此關(guān)鍵字,用于表示是否是循環(huán)行,0表示否,1表示是
CONNECT_BY_ISLEAF:是否是葉子節(jié)點(diǎn),0表示否,1表示是
LEVEL:level偽列,表示層級(jí),值越小層級(jí)越高,level=1為層級(jí)最高節(jié)點(diǎn)
CONNECT_BY_ROOT: 可以獲取樹(shù)形查詢根記錄的字段,start with開(kāi)始的地方被視為根節(jié)點(diǎn)。
SYS_CONNECT_BY_PATH:從start with開(kāi)始的地方開(kāi)始遍歷,并記下其遍歷到的節(jié)點(diǎn),start with開(kāi)始的地方被視為根節(jié)點(diǎn),將遍歷到的路徑根據(jù)函數(shù)中的分隔符,組成一個(gè)新的字符串。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-701168.html

到了這里,關(guān)于Oracle Merge Into ORA-00001: unique constaint violated問(wèn)題的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • hive表數(shù)據(jù)更新insert overwrite/merge into

    根據(jù)甲方要求,需要對(duì)大數(shù)據(jù)平臺(tái)指定表(hive、impala表)的歷史數(shù)據(jù)[2021-01-01至2023-03-29]指定字段進(jìn)行批量更新,然后把表同步到Oracle。先更新大數(shù)據(jù)平臺(tái)上的表,再把更新完成的表同步到Oracle。hive有8張表更新,其中4張大表【分區(qū)表】(數(shù)據(jù)量分別為:1038738976、260958144、2586

    2024年02月08日
    瀏覽(24)
  • oracle報(bào)錯(cuò):ORA-10997,ORA-09967解決

    報(bào)錯(cuò)信息: ORA-10997: another startup/shutdown operation of this instance inprogress ORA-09967: unable to create or open lock file Linux-x86_64 Error: 13: Permission denied 權(quán)限問(wèn)題,修改Oracle目錄權(quán)限 連接到Oracle重新啟動(dòng)就好

    2024年02月15日
    瀏覽(25)
  • ORACLE還原恢復(fù)啟動(dòng)時(shí)數(shù)據(jù)庫(kù)報(bào)ORA-00704, ORA-00604, ORA-00904

    ORACLE還原恢復(fù)啟動(dòng)時(shí)數(shù)據(jù)庫(kù)報(bào)ORA-00704, ORA-00604, ORA-00904

    Oracle數(shù)據(jù)庫(kù)還原恢復(fù)后,執(zhí)行alter database open resetlogs時(shí)遇到下面錯(cuò)誤。如下所示: 剛開(kāi)始有點(diǎn)懵的,第一次遇到這種情形。不過(guò)搜索了一下metalink相關(guān)資料后,大致了解到是因?yàn)榄h(huán)境變量設(shè)置有誤導(dǎo)致這些錯(cuò)誤出現(xiàn)的。這里先介紹一下這個(gè)案例的復(fù)雜背景: 當(dāng)前機(jī)器為一個(gè)測(cè)

    2023年04月13日
    瀏覽(25)
  • 使用sqlplus連接oracle,提示ORA-01034和ORA-27101

    使用sqlplus連接oracle,提示ORA-01034和ORA-27101

    登錄時(shí) 登錄時(shí) ?再連接數(shù)據(jù)庫(kù)就好了 ? ?

    2024年02月13日
    瀏覽(45)
  • Oracle 19c 報(bào)ORA-704 ORA-01555故障處理---惜分飛

    Oracle 19c 報(bào)ORA-704 ORA-01555故障處理---惜分飛

    異常斷電導(dǎo)致數(shù)據(jù)庫(kù)無(wú)法啟動(dòng),嘗試對(duì)數(shù)據(jù)文件進(jìn)行recover操作,報(bào)ORA-00283 ORA-00742 ORA-00312錯(cuò)誤,由于redo寫丟失無(wú)法正常應(yīng)用 D:check_dbsqlplus / as sysdba SQL*Plus: Release 19.0.0.0.0 - Production on 星期日 7月 30 07:49:19 2023 Version 19.3.0.0.0 Copyright (c) 1982, 2019, Oracle.? All rights reserved. 連接到: Oracle

    2024年02月15日
    瀏覽(23)
  • Oracle 報(bào)錯(cuò)ORA-01034: ORACLE not available(Linux),重啟

    Oracle 報(bào)錯(cuò)ORA-01034: ORACLE not available(Linux),重啟

    1.切換到oracle用戶 2.重啟oracle實(shí)例 以上步驟完成后,Linux可本地連接oracle數(shù)據(jù)庫(kù)實(shí)例。 3.oracle 數(shù)據(jù)庫(kù)監(jiān)聽(tīng)器命令 啟動(dòng)監(jiān)聽(tīng)器后,才能遠(yuǎn)程連接。

    2024年04月23日
    瀏覽(25)
  • oracle報(bào)錯(cuò) ORA-00917: missing comma

    oracle執(zhí)行sql語(yǔ)句報(bào)錯(cuò),提示 oracle ORA-00917: missing comma 這是由于sql語(yǔ)句中缺少逗號(hào),仔細(xì)檢查下即可。 執(zhí)行以下語(yǔ)句發(fā)生報(bào)錯(cuò) 結(jié)果提示: 在sql語(yǔ)句中缺少了逗號(hào),導(dǎo)致報(bào)錯(cuò)。

    2024年02月14日
    瀏覽(25)
  • Oracle19c文檔 tnsnames.ora (三)

    ??官網(wǎng)地址:Local Naming Parameters in the tnsnames.ora File 歡迎關(guān)注留言,我是收集整理小能手,工具翻譯,僅供參考,筆芯筆芯. 6.9連接數(shù)據(jù)部分 了解如何使用協(xié)議地址配置網(wǎng)絡(luò)連接。 網(wǎng)絡(luò)對(duì)象由協(xié)議地址標(biāo)識(shí)。建立連接后,客戶端和請(qǐng)求的接收者(偵聽(tīng)器或 Oracle Connection Manag

    2024年01月21日
    瀏覽(25)
  • Oracle 解決ORA-00257 Archiver error 報(bào)錯(cuò)

    日期: 2023-12-11 作者: Tingy, H 訂單投資交易環(huán)境進(jìn)行 impdb 數(shù)據(jù)泵恢復(fù)數(shù)據(jù),執(zhí)行到一半,報(bào)錯(cuò)終止。 系統(tǒng)彈出提示: Oralce 安裝在 Linux 機(jī)器上。 歸檔策略保留時(shí)間較長(zhǎng),或歸檔頻率過(guò)高,導(dǎo)致數(shù)據(jù)庫(kù)掛載盤符空間不足。 臨時(shí)處理辦法: 手動(dòng)刪除歸檔文件。 1. 登錄 Linux 用

    2024年04月26日
    瀏覽(17)
  • oracle作業(yè)執(zhí)行失敗提示ORA-12011的解決思路

    先說(shuō)結(jié)論:請(qǐng)好好的閱讀oracle的alert日志文件,里面的錯(cuò)誤提示是很清楚的,精確到行;在plsql里運(yùn)行作業(yè)出錯(cuò)的提示是簡(jiǎn)略的,容易給人浮躁的心態(tài);如果在ssh工具顯示中文為亂碼,請(qǐng)?jiān)O(shè)置好工具的字符集問(wèn)題。 數(shù)據(jù)庫(kù): ? 12c 發(fā)布 1 錯(cuò)誤代碼: ?ORA-12011 描述: ?無(wú)法執(zhí)行 %s 作

    2024年02月15日
    瀏覽(28)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包