我向一个表添加了一个简单的检查约束,该表包含一些违反约束的行;由于对旧数据进行完整性检查,我本应被引擎阻止,但架构已保存,且没有警告。约束在新插入或更新时按预期工作。这是预期行为吗?我正在使用:XAMPP 3.3(Windows 10),MariaDB 10.4.21,和SQLYog社区版作为前端
oknwwptz1#
是的,这是预期行为,因为CHECK约束将在插入或更新行之前,将按照定义约束的顺序计算所有约束。manual由于已插入旧数据,因此您不会收到违规的错误消息。您可以运行SELECT来检查所有冲突并根据计划更新它们,或者重命名旧表,创建一个具有旧名称的新表并插入所有数据,当遇到约束时,此操作将停止,但第一种方法更安全
SELECT
1条答案
按热度按时间oknwwptz1#
是的,这是预期行为,因为CHECK约束将
在插入或更新行之前,将按照定义约束的顺序计算所有约束。
manual
由于已插入旧数据,因此您不会收到违规的错误消息。
您可以运行
SELECT
来检查所有冲突并根据计划更新它们,或者重命名旧表,创建一个具有旧名称的新表并插入所有数据,当遇到约束时,此操作将停止,但第一种方法更安全