PB+MS SQL+觸發器必須注意,pbsql

來源:互聯網
上載者:User

PB+MS SQL+觸發器必須注意,pbsql

PB+MS SQL+觸發器必須注意:


若觸發器存在兩筆以上的返回值,比如兩條update語句,被誤判為資料有改變,存檔不成功。

提示:

Row changed between retrieve and update.

No changes made to database.

 

 所以MS SQL觸發器必須統一處理為:

         觸發器開始加:

if@@ROWCOUNT=0 Return --提高效能

setnocount on --不返回統計筆數,可減少網路頻繁響應,提高效效能;避免誤判為資料有改變(sybase不存在此類問題)

結束加:

setnocount off



在pb與sql開發的資料庫中,是否使用觸發器,預存程序.

PB沒用過,好象是資料庫開發工具,是開發工具哦,不是使用工具,可以編寫基於SQL資料庫的程式,所以觸發器,預存程序當然在SQL裡面建立了
 
PB不可以動態建立帶變數的SQL觸發器?

messagebox("",ls_mysql)
//提示框出來後,ctrl+c複製出提示框內容,然後ctrl+v到查詢分析器,看看有沒有問題

sqlto.autocommit = true
Execute Immediate :ls_sql;

If sqlto.sqlcode = 0 Then
messagebox("","成功!")
Else
messagebox("","失敗!"+sqlto.sqlerrtext)
End If
sqlto.autocommit = false

如果提示失敗,在真正確認PB中的SQL指令碼沒錯的情況下,檢查
sqlto.sqlerrtext錯誤提示是什麼,然後對症下藥
如果還是不能,看看資料庫是否有修改觸發器的許可權
----------------------
+" select @autoid = cast(rdrecords.autoid as varchar) from rdrecords,inserted where rdrecords.cdefine33 = cast(inserted.rdsid as varchar)"&
+"update purbillvouchs set purbillvouchs.rdsid = cast(@autoid as int(4)) from inserted
=================
就這個地方,update前面沒有空格,拼出來的語句肯定有問題啦!!!
 

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.