Обсуждение: SQL Transaction related

Поиск
Список
Период
Сортировка

SQL Transaction related

От
"Harpreet Dhaliwal"
Дата:
Hi,

I have a transaction like following:

BEGIN

     INSERT INTO tbl_xyz VALUES (val1, val2);
   
    SELECT INTO wid MAX(val1) FROM tbl_xyz;

END;

My question is in the SELECT INTO statement, will I get the value of val1 from the INSERT INTO in the same transaction
even though the transaction has not ended yet.
I think no.
How would I get that latest value of val1 in the same transaction because its not committed yet as the transaction has not ended.

Thanks,

~Harpreeet

Re: SQL Transaction related

От
"Uwe C. Schroeder"
Дата:
Yes it will. Everything INSIDE ONE transaction is visible to that exact
transaction. So in your scenario the val1 from the select will see what was
inserted - just any other transaction won't unless the current one is
committed.

Uwe


On Wednesday 09 May 2007, Harpreet Dhaliwal wrote:
> Hi,
>
> I have a transaction like following:
>
> BEGIN
>
>      INSERT INTO tbl_xyz VALUES (val1, val2);
>
>     SELECT INTO wid MAX(val1) FROM tbl_xyz;
>
> END;
>
> My question is in the SELECT INTO statement, will I get the value of val1
> from the INSERT INTO in the same transaction
> even though the transaction has not ended yet.
> I think no.
> How would I get that latest value of val1 in the same transaction because
> its not committed yet as the transaction has not ended.
>
> Thanks,
>
> ~Harpreeet



--
Open Source Solutions 4U, LLC    1618 Kelly St
Phone:  +1 707 568 3056        Santa Rosa, CA 95401
Cell:   +1 650 302 2405        United States
Fax:    +1 707 568 6416

Re: SQL Transaction related

От
"A. Kretschmer"
Дата:
am  Thu, dem 10.05.2007, um  2:24:40 -0400 mailte Harpreet Dhaliwal folgendes:
> Hi,
>
> I have a transaction like following:
>
> BEGIN
>
>      INSERT INTO tbl_xyz VALUES (val1, val2);
>
>     SELECT INTO wid MAX(val1) FROM tbl_xyz;
>
> END;
>
> My question is in the SELECT INTO statement, will I get the value of val1 from
> the INSERT INTO in the same transaction

No, you get MAX(val1). If the last inserted record contains this value,
than you get it.


> even though the transaction has not ended yet.
> I think no.

Within a transaction you see everything that has gone in this
transaction. Why not?


> How would I get that latest value of val1 in the same transaction because its
> not committed yet as the transaction has not ended.

We have MVCC, and you see your own snapshot, including all results
within this transaction.


Andreas
--
Andreas Kretschmer
Kontakt:  Heynitz: 035242/47150,   D1: 0160/7141639 (mehr: -> Header)
GnuPG-ID:   0x3FFF606C, privat 0x7F4584DA   http://wwwkeys.de.pgp.net