Is there a command to test an SQL query without executing it? ( MySQL or ANSI SQL )
The only thing I know of is to wrap it in a transaction that is always rolled back:
BEGIN TRANSACTION
DELETE FROM user WHERE somekey = 45;
ROLLBACK TRANSACTION
Make sure you execute the entire block and not just the delete statement. Also, DO NOT run this on any production environment or any system where you cannot afford to lose the data.
As of MySQL 5.6, the EXPLAIN
keyword works with SELECT
, DELETE
, INSERT
, REPLACE
, and UPDATE
statements.
If your query has a syntax error, then it will still fail, however if successful you will only see the results of an EXPLAIN and the query will not make any changes.
This is much simpler than doing schema changes, using temp tables, or aborting transactions as all you need to do is insert "EXPLAIN " in front of your existing query.
More information: https://dev.mysql.com/doc/refman/5.6/en/explain.html
In MySQL use this
START TRANSACTION;
QUERY;
It is important to use ";" because if you don't, it won't work. For example
START TRANSACTION;
UPDATE tableX SET colX = valueA, colY = valueB WHERE id=1
Reference here http://dev.mysql.com/doc/refman/5.0/en/commit.html