PHP IBaseQuery不会立即更新?

时间:2013-08-01 13:41:00

标签: php firebird

我按正常方式连接:

$dbh = ibase_connect($host, $username, $password) OR die("could not connect");

然后我运行一个查询:

ibase_query($dbh, 'ALTER TABLE USERS ADD OLDUSERPASS VARCHAR(32) COLLATE NONE') or die(ibase_errmsg());

直接在此之后我跑:

ibase_query($dbh, 'UPDATE USERS SET OLDUSERPASS = USERPASS') or die(ibase_errmsg());

它抱怨道:

Column unknown OLDUSERPASS At line 1

但是当我查看数据库时,该列已经创建。因此,出于某种原因,在运行ALTER之后立即拆分,查询实际上没有提交给服务器。

任何想法为什么?

2 个答案:

答案 0 :(得分:3)

尝试 ibase_commit($dbh)在alter statement

之后

答案 1 :(得分:2)

在Firebird中,DDL处于事务控制之下,并且不允许您在同一事务中使用新创建的对象(表,列等)。因此,在执行使用该对象的查询之前,您首先需要提交。