📄 005.phpt
字号:
--TEST--InterBase: transactions--SKIPIF--<?php include("skipif.inc"); ?>--FILE--<?php /* $Id: 005.phpt,v 1.8 2004/05/19 08:54:52 helly Exp $ */ require("interbase.inc"); ibase_connect($test_base); @ibase_query("create table test5 (i integer)"); @ibase_query("delete from test5"); ibase_close(); echo "default transaction:\n"; /*Difference between default and other transactions:default commited when you call ibase_close().Other transaction doing rollback.If you not open default transaction withibase_trans, default transaction openwhen you call ibase_query(), ibase_prepare(),ibase_blob_create(), ibase_blob_import() first time.*//*simple default transaction test without ibase_trans()*/ ibase_connect($test_base); echo "empty table\n"; /* out_table call ibase_query() and ibase_query() start default transaction */ out_table("test5"); /* in default transaction context */ ibase_query("insert into test5 (i) values (1)"); echo "one row\n"; out_table("test5"); ibase_rollback(); /* default rolled */ echo "after rollback table empty again\n"; out_table("test5"); /* started new default transaction */ ibase_query("insert into test5 (i) values (2)"); ibase_close(); /* commit here! */ ibase_connect($test_base); echo "one row\n"; out_table("test5"); ibase_close();/*default transaction on default linkFirst open transaction on link will be default.$tr_def_l1 may be ommited. All queryes without link and transparameters run in this context*/ $link_def = ibase_connect($test_base); $tr_def_l1 = ibase_trans(IBASE_READ); /* here transaction start */ /* all default */ $res = ibase_query("select * from test5"); echo "one row\n"; out_result($res,"test5"); ibase_free_result($res); /* specify transaction context... */ $res = ibase_query($tr_def_l1, "select * from test5"); echo "one row... again.\n"; out_result($res,"test5"); ibase_free_result($res); /* specify default transaction on link */ $res = ibase_query($link_def, "select * from test5"); echo "one row.\n"; out_result($res,"test5"); ibase_free_result($res); ibase_rollback($link_def); /* just for example */ ibase_close(); /*three transaction on default link*/ ibase_connect($test_base); $res = ibase_query("select * from test5"); echo "one row\n"; out_result($res,"test5"); ibase_free_result($res); $tr_1 = ibase_query("SET TRANSACTION"); $tr_2 = ibase_query("SET TRANSACTION READ ONLY"); $tr_3 = ibase_trans(IBASE_READ+IBASE_COMMITTED+IBASE_REC_VERSION+IBASE_WAIT); $tr_4 = ibase_trans(IBASE_READ+IBASE_COMMITTED+IBASE_REC_NO_VERSION+IBASE_NOWAIT); /* insert in first transaction context... */ /* as default */ ibase_query("insert into test5 (i) values (3)"); /* specify context */ ibase_query($tr_1, "insert into test5 (i) values (4)"); $res = ibase_query("select * from test5"); echo "two rows\n"; out_result($res,"test5"); ibase_free_result($res); $res = ibase_query($tr_1, "select * from test5"); echo "two rows again\n"; out_result($res,"test5"); ibase_free_result($res); ibase_commit(); ibase_commit($tr_1); $tr_1 = ibase_trans(); ibase_query($tr_1, "insert into test5 (i) values (5)"); /* tr_2 is IBASE_READ + IBASE_CONCURRENCY + IBASE_WAIT */ $res = ibase_query($tr_2, "select * from test5"); echo "one row in second transaction\n"; out_result($res,"test5"); ibase_free_result($res); /* tr_3 is IBASE_COMMITTED + IBASE_REC_VERSION + IBASE_WAIT */ $res = ibase_query($tr_3, "select * from test5"); echo "three rows in third transaction\n"; out_result($res,"test5"); ibase_free_result($res); /* tr_4 IBASE_COMMITED + IBASE_REC_NO_VERSION + IBASE_NOWAIT */ $res = ibase_query($tr_4, "select * from test5"); echo "three rows in fourth transaction with deadlock\n"; out_result_trap_error($res,"test5"); ibase_free_result($res); ibase_rollback($tr_1); ibase_close();/*transactions on second link*/ $link_1 = ibase_pconnect($test_base); $link_2 = ibase_pconnect($test_base); $tr_1 = ibase_trans(IBASE_DEFAULT, $link_2); /* this default transaction also */ $tr_2 = ibase_trans(IBASE_COMMITTED, $link_2); $res = ibase_query($tr_1, "select * from test5"); echo "three rows\n"; out_result($res,"test5"); ibase_free_result($res); ibase_query($tr_1, "insert into test5 (i) values (5)"); $res = ibase_query($tr_1, "select * from test5"); echo "four rows\n"; out_result($res,"test5"); ibase_free_result($res); ibase_commit($tr_1); $res = ibase_query($tr_2, "select * from test5"); echo "four rows again\n"; out_result($res,"test5"); ibase_free_result($res); ibase_close($link_1); ibase_close($link_2); echo "end of test\n";?>--EXPECT--default transaction:empty table--- test5 ------one row--- test5 ---1 ---after rollback table empty again--- test5 ------one row--- test5 ---2 ---one row--- test5 ---2 ---one row... again.--- test5 ---2 ---one row.--- test5 ---2 ---one row--- test5 ---2 ---two rows--- test5 ---2 3 ---two rows again--- test5 ---2 4 ---one row in second transaction--- test5 ---2 ---three rows in third transaction--- test5 ---2 3 4 ---three rows in fourth transaction with deadlock--- test5 ---2 3 4 errmsg [lock conflict on no wait transaction deadlock ] ---three rows--- test5 ---2 3 4 ---four rows--- test5 ---2 3 4 5 ---four rows again--- test5 ---2 3 4 5 ---end of test
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -