FÖRKLARA gör susen om du kör MySQL 5.6 eller senare.
explain update whatever;
Om frågan är ok visar den exekveringsplanen. Annars returnerar det syntaxfelet.
Om du kör en mindre version av MySQL ser jag några alternativ:
- Det rekommenderade alternativet :Ha en testdatabas redo som återspeglar din produktionsdatabas åtminstone i struktur . Helst ha den fylld med testdata för att verifiera att frågan inte bara är syntaktisk korrekt; men att det fungerar som förväntat .
- Kör frågan inom ramen för en TRANSAKTION som omedelbart rullas tillbaka.
- Kör en version av frågan som är något modifierad för att matcha NO ROWS.
Till exempel:
update table set col1 = @val1 where col2 = @val2;
Blir:
update table set col1 = @val1 where (col2 = @val2) and 1=0;
Så, om du kör 5.6 eller senare, EXPLAIN
trick är snyggt. Om inte är alternativ 2 och 3 från listan också snygga (ish) knep. Men du bör generellt sett nå en utveckling server med din under utveckling frågor i alla fall.