我按正常方式连接:
$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之后立即拆分,查询实际上没有提交给服务器。
任何想法为什么?
答案 0 :(得分:3)
尝试
ibase_commit($dbh
)在alter statement
答案 1 :(得分:2)
在Firebird中,DDL处于事务控制之下,并且不允许您在同一事务中使用新创建的对象(表,列等)。因此,在执行使用该对象的查询之前,您首先需要提交。