我们有一个用于生成唯一数字键的表。这些键然后用作其他表中的PrimaryKey。表结构是这样的:
TableName VARCHAR
CurrentKey INT
所以我们在这个表中有数据
TableName Customers
CurrentKey 400
所以,当我们需要下一个主键表中Customers
我们可以得到CurrentKey
从这个表,其中TableName
是Customers
,它会给我们400,我们的增量(400
+ 1),它和我们更新表也是这个关键。所以我们CurrentKey
现在是401。
我们用于此目的的sql是:
SQL1:
DECLARE @CurrentKey INT
UPDATE myTable
SET @CurrentKey = CurrentKey = CurrentKey + 1
WHERE TableName = @TableName
我的问题是,是否需要锁定表,以便如果多个用户同时调用此键,则键可能不会重复?我确定SQL Server将不允许重复的数据,但我不知道该如何…用表锁查询:
SQL2
BEGIN TRANSACTION
DECLARE @CurrentKey INT
UPDATE myTable WITH (TABLOCKX)
SET @CurrentKey = CurrentKey = CurrentKey + 1
WHERE TableName = @TableName
END TRANSACTION
有人可以解释一下SQL Server如何处理UPDATE
呼叫吗?
每个SQL语句都在事务中运行,并且update
语句始终使用锁来保护其更新。SQL Server不允许您读取半修改的行(某些例外情况是大于8k的数据。)
您的第一句话应该没问题。
当使用事务处理时,需要创建 Session 对象。在进行事务处理时,可以混用 ORM 方法和 RAW 方法,如下代码所示: func MyTransactionOps() error { session := engine.NewSession() defer session.Close() // add Begin() before any action
启动事务 $this->db->start(); Swoole::$php->db('slave2')->start(); 提交事务 $this->db->commit(); Swoole::$php->db('slave2')->commit(); 回滚事务 $this->db->rollback(); Swoole::$php->db('slave2')->rollback();
在2.0.0之后我们已经支持事务嵌套了,是通过事务等级去实现的。 1. 开始事务 $model->beginTransaction(); 2. 事务提交 $model->commit(); 3. 事务回滚 $model->rollback();
事务处理(transaction processing) 可以用来维护数据的完整性,保证SQL的操作要么完全执行,要么完全不执行,如果发生错误就进行撤销。 保证数据的完整性。 保证数据不受外影响。 事务处理的几道术语 事务(transaction) 一组SQL语句 退回(rollback)撤销执行SQL语句的过程 提交(commit) 将为执行的SQL语句写入数据库表 保留点(savepoint)
如何使事件在ReactJS中工作?它应该在按下回车键(keyCode=13)时发出警报。
本文向大家介绍如何处理jQuery AJAX成功事件?,包括了如何处理jQuery AJAX成功事件?的使用技巧和注意事项,需要的朋友参考一下 要处理jQuery AJAX成功事件,请使用方法。只要AJAX请求成功完成,ajaxSuccess(callback)方法就会附加一个要执行的函数。这是一个Ajax事件。 这是此方法使用的所有参数的描述- callback- 要执行的功能。事件对象,XML