小問題,高手們幫幫忙,解決有分,萬分感謝!!!
delete = "DELETE FROM 表1 WHERE COMPANYID = ' " + ddl_bu.SelectedValue.ToString() + " ' AND
SO = ' " + DT1.Rows[j][ "ASUS_SO "]+ " ' ";
cmd.CommandText=delete;
cmd.Transaction = trx;
cmd.ExecuteNonQuery();
insert = "INSERT INTO 表1(COMPANYID,VENDORCODE,SO,PO,ITEM_SEQ,PARTNUMBER,SERIAL_NO,INVOICE_NO,UPLOAD_USER,FLAG)
SELECT COMPANYID,VENDORCODE,SO, ' "+strPO+ " ',ITEMSEQ,PARTNUMBER,SERIAL_NO,INVOICE_NO, ' " + Session[ "UserID "].ToString() + " ', 'U '
FROM 表2 WHERE COMPANYID = ' " + ddl_bu.SelectedValue.ToString() + " ' AND SO = ' " + DT1.Rows[j][ "ASUS_SO "] + " ' ";
cmd.CommandText = insert;
cmd.Transaction = trx;
cmd.ExecuteNonQuery();
trx.Commit();
trx.Dispose();
cmd.Dispose();
為什么會出現這樣的錯誤:
unique constraint (IDX_表1) violated
如果不delete 直接insert 會有這樣的錯誤我知道,但我已經delete 就不會有重復的index數據出現了,難道是我的trx.Commit();未執行,它沒有delete 動作???
但我trx.Commit();動作必須放在它們的后面,請高手們指教!!!!!
是什么原因,怎么解決?????????
------解决方案--------------------對不起,前面回答有誤,事務處理,是按先后進行執行,一起提交的。因此跟事務是沒有關系的,你出現以上的原因據我分析應該是數據的問題,你可以先去掉事務部分,單步執行到delete完成,查看數據庫表表的數據是否已真正刪除,然后再執行insert。這樣應該可以查出原因。