SQL 服务器唯一约束是否部分或完全失败多行写入?

2 sql-server constraint row unique-constraint

如果写入查询的某些行未通过唯一约束,那么只会拒绝这些写入,还是整个查询都会失败?

JNK*_*JNK 6

SQL Server 中的每个单独事务(语句)都是原子的,这意味着它作为一个单元通过或失败。

如果第 999,999 条记录在 1,000,000 行插入中因违反约束而失败,则所有其他行都将回滚,并且该表与尝试失败语句之前的状态完全相同。

这同样适用于更新和删除,以及显式事务中的多个语句。例如,如果我有一个显式事务,它执行 aDELETE后跟 anINSERT和 an UPDATE,如果我在UPDATE和 发布手册中遇到问题,ROLLBACK所有这些操作都会被撤消。

  • 还可以提到,如果打开了 `ignore_dup_key`,那么只有欺骗失败(对于插入)。 (3认同)