php运行插入事务,php – 表锁定事务,删除然后插入相同的事务

更新的问题

所以我进一步调试了这个问题,我的代码现在看起来像这样:

$mssql->beginTransaction();

$mssql->sql("DELETE FROM [TABLE] WHERE [FIELD] = 'Test'");

// Write the result from the above query,

// this will confirm the row was deleted

print_r($mssql->result);

$mssql->sql("SELECT FROM [TABLE] WHERE [FIELD] = 'Test'");

// Write the result from the above query,

// this SHOULD be empty as the row was just deleted

print_r($mssql->result);

$mssql->endTransaction();

上面的脚本在一个SQL Server数据库上非常完美,但在另一个SQL Server数据库上(不同服务器上的重复数据库),它不起作用.

第二个数据库设法从表中检索一行,即使该行应该刚被删除…

附加信息

>从我所看到的,数据库选项的唯一区别是Broker Enabled选项,我认为这与此无关.

>我不知道如何访问或查看交易选项,这些是否相关?

>这可能与表锁定有关吗?

SQL跟踪

declare @p1 int

set @p1=1

exec sp_prepexec @p1 output,N'@P1 nvarchar(6)',N'DELETE FROM TABLE WHERE [FIELD]=@P1',N'M87996'

select @p1

go

declare @p1 int

set @p1=2

exec sp_prepexec @p1 output,NULL,N'SELECT db_name()'

select @p1

go

exec sp_unprepare 2

go

exec sp_unprepare 1

go

declare @p1 int

set @p1=1

exec sp_prepexec @p1 output,N'@P1 nvarchar(6)',N'SELECT * FROM [TABLE] WHERE [FIELD]=@P1 ',N'M87996'

select @p1

go

exec sp_unprepare 1

go

原始问题

这是我第一次使用SQL Transactions,所以如果我天真,我会道歉.

我有一个事务,从数据库中删除一个项目,然后插入更新的项目,但在同一主键下.

请考虑以下内容(忽略我的包装类函数):

$mssql->beginTransaction();

$mssql->sql("DELETE FROM [TABLE] WHERE [FIELD] = 'Test'");

$mssql->sql("INSERT INTO [TABLE] ([FIELD]) VALUES ('Test'));

$mssql->endTransaction();

但是,有了上述内容,我收到了Duplicate Primary Key错误.那是因为它还没有提交第一个查询吗?

因此,不可能在同一个事务中同时拥有上述两个查询吗?

遗憾的是我无法使用简单的UPDATE命令执行上述操作,因为我必须删除某些行,并且无法知道要删除哪些行…

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值