So I am creating a stored procedure in SQL2014. Towards the start it has:
Begin Transaction
Then it does an insert into a table, which has an auto-incrementing primary key:
Insert into tNotice.
And then latter on in the stored proc, I need to write a query against the tNotice table to use to build up another insert statement into a different table. My question is, will the newly inserted values be selected since this is going to be in a transaction, and the commit won't be until the end of the stored proc?
Best Answer
You can do a quick test to confirm this, I just ran a test out of curiousity, this is on sql server 2012. The current session will have visibility to a record that was previously inserted but not committed, however other sessions will not have visibility to that depending on their transaction isolation level.
Example
I ran this in one ssms window, with the default isolation level of ReadCommitted. Without committing, the select will still see the value of 1 inserted.
Now if you open up another ssms window, and try to query that table, you won't see any records, because it hasn't been committed yet.