Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 支票约束是邪恶的吗?_Mysql_Sql - Fatal编程技术网

Mysql 支票约束是邪恶的吗?

Mysql 支票约束是邪恶的吗?,mysql,sql,Mysql,Sql,我的问题很简单:sql检查是邪恶的吗?我的意思是,特别是那些我们可以对客户进行的检查 这可能是历史上最短的问题,但这是一个严肃的问题。您的意思是检查约束,但您使用了不支持它的MySQL标记。无论如何,检查约束是为了在将数据插入列之前验证业务约束示例:年龄必须小于100 是的,如果您可以在应用程序层执行相同的验证,并且一旦有效,则只将数据传递给DB层,否则会向最终用户抛出一些验证消息,这将是非常明智的。这样,您还可以保存到数据库的往返过程。检查约束绝对不是坏事 约束的目的是使数据库保持数据完整性。

我的问题很简单:sql检查是邪恶的吗?我的意思是,特别是那些我们可以对客户进行的检查

这可能是历史上最短的问题,但这是一个严肃的问题。

您的意思是检查约束,但您使用了不支持它的MySQL标记。无论如何,检查约束是为了在将数据插入列之前验证业务约束示例:年龄必须小于100


是的,如果您可以在应用程序层执行相同的验证,并且一旦有效,则只将数据传递给DB层,否则会向最终用户抛出一些验证消息,这将是非常明智的。这样,您还可以保存到数据库的往返过程。

检查约束绝对不是坏事

约束的目的是使数据库保持数据完整性。数据完整性的某些方面是通过验证进入列的数据来维护的。数据库是进行这些检查的适当位置


事实上,我的观点正好相反。数据完整性验证应该在数据库中,而不是在应用程序层。某些类型的约束(如唯一性)在应用程序级别无法轻松维护。

什么是SQL检查?您是否参考了从表中选择、检查是否存在、如果不插入检查类型?@Mjh它们本身并不是邪恶的。当然,它们纯粹是装饰性的,因为引擎没有强制执行它们。在其他数据库系统中,无论使用哪个客户端或管理工具来修改数据,都有一个可以信任的后台,这通常被视为一件好事,而不是坏事。我个人认为这是毫无意义的。话虽如此,我想你会得到这个问题的自以为是的答案。你可以有一个参数,说明为什么你要检查它是否大于零,如果你可以把它作为无符号的。对于数据完整性来说,这可能有一些用处,但话说回来,每件事都有好的一面和坏的一面。这样做的缺点是,如果要允许不同的值范围,就必须更改表定义。这对你是否有益——只有你自己知道。你能定义一下“邪恶”是什么意思吗?我认为,这个术语取决于解释,这可能使提问者基于观点。基于意见的问题和答案与堆栈溢出无关。见:的确如此。同样可以说有唯一的约束,对吗?我的意思是,如果应用程序层写得足够好,那么许多约束就可以被忽略avoided@Asperger,否,不适用于唯一约束。这是为了确保列只包含唯一的值。从应用层,您可能并不总是确保相同。你能吗?是的,但这不是100%有希望的。我想说,你也应该在数据库级别强制执行这些约束,事实上,最重要的是。特别是在唯一约束的情况下。