0

我连接正常方式:

$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 之后的那一瞬间,查询实际上并没有提交给服务器。

任何想法为什么?

4

2 回答 2

3

尝试 ibase_commit($dbh) 在 alter 语句之后

于 2013-08-01T14:33:19.943 回答
2

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

于 2013-08-01T14:47:34.153 回答