[英]if exists update else insert
我想知道下一段代碼是否正確:
SqlCommand cmd = new SqlCommand(
"IF NOT EXISTS(SELECT count(*) from Raspunsuri where id_intrebare=2)" +
"Insert INTO Raspunsuri VALUES(@raspuns,@cnp,@data,2,@ip,@idsesiune)" +
"else" +
"UPDATE Raspunsuri SET raspuns=@raspuns,cod_numeric_personal=@cnp,data_raspuns=@data,id_intrebare=2,ip_user=@ip,id_sesiune=@idsesiune WHERE id_intrebare=2", con);
我想插入的所有參數都是正確的,但是似乎這段代碼沒有執行插入或更新操作。您有什么建議嗎?這是與c#結合使用的sql查詢。
檢查該命令創建的字符串:某些單詞之間需要空格。
SqlCommand cmd = new SqlCommand("IF NOT EXISTS(SELECT 1 from Raspunsuri where id_intrebare=2)" +
" Insert INTO Raspunsuri VALUES(@raspuns,@cnp,@data,2,@ip,@idsesiune)" +
" else" +
" UPDATE Raspunsuri SET raspuns=@raspuns,cod_numeric_personal=@cnp,data_raspuns=@data,id_intrebare=2,ip_user=@ip,id_sesiune=@idsesiune WHERE id_intrebare=2", con);
否,因為您選擇的count
始終是一個值。
選擇一列或*
。
SqlCommand cmd = new SqlCommand(
"IF NOT EXISTS(SELECT id_intrebare from Raspunsuri where id_intrebare=2) " +
"Insert INTO Raspunsuri VALUES(@raspuns,@cnp,@data,2,@ip,@idsesiune) " +
"else " +
"UPDATE Raspunsuri SET raspuns=@raspuns,cod_numeric_personal=@cnp,data_raspuns=@data,id_intrebare=2,ip_user=@ip,id_sesiune=@idsesiune WHERE id_intrebare=2", con);
您為什么不使用MERGE命令?
您可以先嘗試在SQL Server Management Studio
窗口中執行查詢。 這將為您提供調試事物的簡便方法
我認為“ else”語句之間缺少空格還請確保您已在values部分提供了所有列
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.