Sql 数据库检查和并发事务

Sql 数据库检查和并发事务,sql,transactions,acid,Sql,Transactions,Acid,dbms如何保证我们定义的检查\comstraints在提交后始终为真 我的意思是,他们可能会使用特殊的技术,因为仅仅在提交之前执行检查,就像我们可以做的那样,因为多个事务同时进行,所以无法工作 Acid属性是否保证无论有多少事务并行运行,db状态始终保持一致 感谢不同的数据库使用不同的技术,但基本上,所有数据库都会锁定一些东西,以确保无法更改的东西不会实际更改,从而确保保留约束 发件人: 什么是SQL上下文中的数据库锁?提供示例和解释。 数据库锁用于“锁定”数据库中的某些数据,以便只有一个数据

dbms如何保证我们定义的检查\comstraints在提交后始终为真

我的意思是,他们可能会使用特殊的技术,因为仅仅在提交之前执行检查,就像我们可以做的那样,因为多个事务同时进行,所以无法工作

Acid属性是否保证无论有多少事务并行运行,db状态始终保持一致


感谢

不同的数据库使用不同的技术,但基本上,所有数据库都会锁定一些东西,以确保无法更改的东西不会实际更改,从而确保保留约束

发件人:

什么是SQL上下文中的数据库锁?提供示例和解释。

数据库锁用于“锁定”数据库中的某些数据,以便只有一个数据库用户/会话可以更新该特定数据。因此,数据库锁的存在是为了防止两个或多个数据库用户在同一时间更新同一数据段。当数据被锁定时,这意味着另一个数据库会话在释放锁之前无法更新该数据(这将解锁数据并允许其他数据库用户更新该数据)。锁通常通过ROLLBACK或COMMIT SQL语句释放


这意味着,如果
在表
a
中插入一行
外键
约束到表
b
,则表
b
中的对应行将被锁定,直到事务结束,这样,在您完成事务之前,它将无法被另一个并发事务删除

多版本并发控制数据库可能使用其他一些不同的技术;但它们基于相同的原则