• Good article - great discussion 😀 When reading the article I thought "that makes sense". But the locking problems, coupled with the systems with which I'm associated not having millions of inserts, I'll probably stick with the IF exists check first. Can't wait for the MERGE keyword - it has so much potential for doing the insert / update / delete synchronisation of two tables splendidly. I like that instead of where you might expect a delete (when the record's not in the source table) you could, instead of coding a delete statement, code an update that sets a deleted flag instead. Of course it's possible without MERGE but I suspect it will be more efficient and, as a construct, it's quite elegant.

    Shame I won't be able to use it for about 5 years since we have to wait for customers to upgrade (some are still on SQL 2k - arrrgh!)

    Select * certainly is bad to return data to the client - lazy more than anything I suppose. But using select * in an exists doesn't hurt, although you'll still see many veterans argue that it does hurt and instead do things like select 1 (ie, 1 being a constant). 😀