3

移行を試みましたが、このクエリに問題があります:

$DB->query("replace into periodetojour(idperiode,idjour,heure)
            values('".addslashes($idperiode)."','2','".addslashes($mardi)."')");

SQL Server 2008では使用できず、使用する必要があるREPLACE INTOことがわかりましたMERGE INTO

私の問題は、使用して機能しているクエリが見つからないため、MERGE INTOおそらくうまく使用していないことです。MERGE INTO でどのように変更できますか? SQL Server 2008 で変更する義務はありますか?

ご回答有難うございます。

4

1 に答える 1

6

あなたの場合、MERGEステートメントは次のようになります。

$DB->query("MERGE INTO periodetojour dst 
            USING ( 
              SELECT '".addslashes($idperiode)."' idperiode, 
                     '2' idjour, 
                     '".addslashes($mardi)."' heure 
            ) src  
            ON src.idperiode = dst.idperiode  
            WHEN MATCHED THEN UPDATE SET  
              dst.idjour = src.idjour, 
              dst.heure = src.heure  
            WHEN NOT MATCHED THEN INSERT (idperiode, idjour, heure)  
              VALUES(src.idperiode, src.idjour, src.heure)");

idperiodeこれは、それが主キーであると想定しています。主キーが構成されている場合は、句とそれに応じて句(idperiode, idjour)を調整する必要があります。ONWHEN MATCHED THEN UPDATE SET

            -- [...]
            ON src.idperiode = dst.idperiode  
            AND src.idjour = dst.idjour
            WHEN MATCHED THEN UPDATE SET  
              dst.heure = src.heure
            -- [...]
于 2012-04-30T15:18:18.233 に答える