http://qs321.pair.com?node_id=1208065


in reply to Re^4: DBI Problem
in thread SOLVED: DBI Problem

So does that mean Create table statements force a commit to the DB even if Autocommit is 0 and I never explicitly called commit?

Try it and see. I suppose it makes sense; CREATE TABLE is DDL; INSERT is DML; and only some databases (PostgreSQL, for instance) know how to do transactional DDL.

Transactional DDL example:

# begin; --> start a transaction create table testtable(id serial, c text); --> ... and create a tabl +e BEGIN CREATE TABLE # insert into testtable (c) values ('this will be short-lived'); --> +insert a row INSERT 0 1 # select * from testtable; --> have a look id | c ----+-------------------------- 1 | this will be short-lived (1 row) # rollback; --> go back to initial state before begin ROLLBACK # select * from testtable; --> now the table is gone... ERROR: relation "testtable" does not exist LINE 1: select * from testtable; ^

You get the idea...

Update: added a DDL transaction begin-create-rollback session.