FORKLÆR gør tricket, hvis du kører MySQL 5.6 eller nyere.
explain update whatever;
Hvis forespørgslen er ok, viser den udførelsesplanen. Ellers returnerer den syntaksfejlen.
Hvis du kører en mindre version af MySQL, ser jeg et par muligheder:
- Den anbefalede mulighed :Hav en testdatabase klar, der afspejler din produktionsdatabase i det mindste i struktur . Ideelt set skal det udfyldes med testdata for at bekræfte, at forespørgslen ikke kun er syntaktisk korrekt; men at det fungerer som forventet .
- Kør forespørgslen inden for rammerne af en TRANSAKTION der straks rulles tilbage.
- Kør en version af forespørgslen, der er lidt ændret, så den matcher NO ROWS.
For eksempel:
update table set col1 = @val1 where col2 = @val2;
Bliver:
update table set col1 = @val1 where (col2 = @val2) and 1=0;
Så hvis du kører 5.6 eller nyere, er EXPLAIN
trick er pænt. Hvis ikke, er muligheder 2 og 3 fra listen også pæne tricks. Men du bør generelt ramme en udvikling server med din i-udvikling forespørgsler alligevel.