Why "Begin Transaction" before "Insert Query" locks the entire table?
The question above contains outright, no two ways about it, plain old factually incorrect answers. I've commented on one and flagged the post that is misinformed but the moderator response has come back as:
"If you will comment on the answer to the effect that this is factually wrong and state why, I'll mod the post further. Flag it again after you comment."
In my opinion I've already done this, haven't I? Should I add a full answer explaining the mechanics of transactions, which would in effect be an answer to address a poor answer rather than the original question?
I'd be interested in opinions on this specific example as well as a general approach.
Edit: Following @Jack's question
The BOL link states:
An INSERT statement always acquires an exclusive (X) lock on the table it modifies, and holds that lock until the transaction completes. With an exclusive (X) lock, no other transactions can modify data; read operations can take place only with the use of the NOLOCK hint or read uncommitted isolation level. For more information, see Locking in the Database Engine.
You can view this badly worded and misinterpreted, or plain nonsense. Exclusive locks will be acquired on "some" resources but it is not always going to be the entire table. If this were true, inserts could only ever occur serially which is an absurd notion. Depending on the isolation level and the query it may be necessary to lock rows, pages or ranges of one or both but not the table by default.
Comically, the link in the quoted paragraph takes the reader to a full and accurate explanation of how various resources are locked, starting with Lock Granularity and Hierarchies.