static final String SQLUPDATEGOODS ="merge into b_supplier_shopping_cart t using dual on (t.supplier_no=? and t.goods_no=?)when not matched then insert (supplier_no,goods_no,goods_buy_num,goods_box_price,create_account,modify_account,create_date,modify_date,goods_all_price) values (?,?,?,?,?,?,?,?,?) when matched then update set goods_buy_num = ?,goods_all_price=? ";
dual on 后邊跟條件多個(gè)條件用and連接.當(dāng)不滿足條件也就是when not matched執(zhí)行的是insert否則就是update(將要修改的字段寫進(jìn)來(lái))售躁。
當(dāng)我寫到這時(shí)略荡,突然發(fā)現(xiàn)dual?是什么谋旦?查了一下資料
DUAL是Oracle與數(shù)據(jù)字典一起自動(dòng)創(chuàng)建的一個(gè)表,它只有一列:DUMMY葬馋,其數(shù)據(jù)類型為:VARCHAR2(1)。DUAL中只有一行數(shù)據(jù):‘X’。DUAL屬于SYS模式仑撞,但所有用戶都可以使用DUAL名稱訪問(wèn)它只搁。用SELECT計(jì)算常量表達(dá)式音比、偽列等值時(shí)常用該表,因?yàn)樗环祷匾恍袛?shù)據(jù)氢惋,而使用其它表時(shí)可能返回多個(gè)數(shù)據(jù)行洞翩。