Re: transactions from PHP - double COMMIT required?
От | Mihail Mihailov |
---|---|
Тема | Re: transactions from PHP - double COMMIT required? |
Дата | |
Msg-id | 20070301131523.fgfm83nb9y2kgo4c@imp3.uta.fi обсуждение исходный текст |
Ответ на | transactions from PHP - double COMMIT required? (mikie <mikie.pl@gmail.com>) |
Ответы |
Re: transactions from PHP - double COMMIT required?
|
Список | pgsql-php |
Hi, I think you should use ROLLBACK if the query cannot be executed. one can commit only results of the queries that work. Try ROLLBACK statement. Mihail Quoting mikie <mikie.pl@gmail.com>: > Hi, > > I have this problem - after sending a query from PHP script with > BEGIN-COMMIT transaction block that contains an error (e.g. I > intentionally insert wrong data into the field of "date" type) I get > an error (which is OK):ERROR: date/time field value out of range. > > Now, when I try to DELETE or perform some other query later in the > same PHP script I receive this error: > ERROR: current transaction is aborted, commands ignored until end of > transaction block > > I am 100% sure that I have closed the transaction block with > "COMMIT;". When I do the same in the console (psql) I get something > like: > > BEGIN; INSERT INTO table1 (somecolumn) VALUES ('somedata'); > INSERTsdf; COMMIT; > > I get this reply > BEGIN > INSERT 180610 1 > ERROR: syntax error at or near "INSERTsdf" at character 1 > ROLLBACK > > Everything seems to be logical and works fine. So why this does not > work from PHP? I figured one thing to workaround my problem: I am > sending the query like this: > BEGIN; > (here are few insert queries, one is syntax error); > COMMIT; > Then I check the pg_result of this query in PHP, and if it is FALSE I > have to send another simple query : "COMMIT;" - yes I know this is > second commit already. But it works this way! > It seems like if PHP ignored my COMMIT command from the transaction query. > I also tried sending the transaction query like this: > BEGIN; > some queries; > COMMIT;COMMIT; > but this is not working. I need to send one transaction query, check > if the result is false, then send another COMMIT. > > Any ideas where I got something missed? > > Regards, > Mike > > ---------------------------(end of broadcast)--------------------------- > TIP 9: In versions below 8.0, the planner will ignore your desire to > choose an index scan if your joining column's datatypes do not > match -- Mihail Mihailov, lehtori Käännöstiede (venäjä) Kieli- ja käännöstieteiden laitos 33014 Tampereen yliopisto puh. (03) 3551 6123 sähköposti: mihail.mihailov@uta.fi
В списке pgsql-php по дате отправления: