0

我正在实施和设计我的第一个数据库,并且有很多包含名称和地址等的列。

对这些列施加约束似乎是合乎逻辑的,CHECK这样 DB 只接受来自字母数字范围的值(不允许任何特殊字符)。

我正在使用 MySQL,据我所知它不支持用户定义的类型,有没有简单的方法可以做到这一点?

防止不良数据进入数据库似乎是值得的,但是是否应该将这种复杂的检查转移到应用程序中呢?

4

2 回答 2

1

如果您使用的是 mysql ,则不能使用 CHECK 约束来执行此操作(问题被标记为,所以我认为是这种情况)- mysql 不支持检查约束。它们在语法中是允许的(与来自其他数据库的 DDL 兼容),但在其他方面被忽略。

您可以将触发器添加到在插入和更新时触发的表中,以检查数据的合规性,但是如果您发现问题,则无法从 mysql 存储过程中引发异常。

我使用了一种解决方法,即点击一个不存在的表,但其名称可以传达您想要的含义,例如

update invalid_characters set col1 = 1;

并希望阅读“table invalid_characters 不存在”消息的人明白这一点。

于 2012-12-08T12:46:36.133 回答
0

几个设置允许您更改 MySQL 如何处理特定情况(但这些还不够)。

我会坚持在应用程序端进行数据验证,但如果您需要在数据库端进行验证,您有两种选择:

于 2012-12-08T12:50:29.470 回答