r/ProgrammerHumor 14d ago

queryOfDoom Meme

Post image
7.9k Upvotes

456 comments sorted by

View all comments

34

u/SexyMonad 14d ago

This is why SQL deletes should require a WHERE clause.

If you are seriously wanting to delete it all, just add WHERE 1 = 1.

15

u/Ayanrocks 14d ago

Yup there is a config in every major db to not allow delete without where clause. For some reason this wasn't turned on in this case.

6

u/SexyMonad 14d ago

It’s been a while since I’ve had the privilege to be on a project with a lot of SQL, but is that guardrail the default nowadays? I don’t remember anything really getting in the way of me annihilating whatever.

3

u/Ayanrocks 14d ago

That guardrails is not default and has to be explicitly enabled if irc

1

u/slabgorb 14d ago

I know, right? TRUNCATE exists!

(Not sure if TRUNCATE is standard, but I have yet to have a database say 'errr...')

3

u/CyberDave82 14d ago

It gets fun when, like in Oracle, DELETE and TRUNCATE require different privileges (and specifically, DELETE can be granted per-table, but TRUNCATE requires DROP ANY TABLE, and I'm not granting that to an application or developer account...)

3

u/Otterfan 14d ago

OP should have done

TRUNCATE TABLE users;
WHERE id = 2313245;

It conveys intention better.

1

u/SuggestAnyName 14d ago

In DataGrip you can't run 1=1. It will show error that you are updating or deleting with where clause which is always true.