mysql - 向列添加约束

标签 mysql sql

任何人都可以帮我编写一个查询,以在带有“%/%”的 BestFigure 列上添加约束,即它应该是 3/10 格式。

请引用图片。

Image Link

create table Player(
Player_No int Identity(1,1) Primary Key, Player_Name Varchar(20) Not null,
Category Varchar(20) check (Category='batsman' or Category='bowler' or Category='Allrounder'),
BestFigure Varchar(10) check (Bestfigure like'%/%'))

最佳答案

我认为更好的解决方案是将两个数字分开存储,然后将它们组合起来:

BestFigure_left int,
BestFigure_right int,
BestFigure varchar(10) generated always as (concat(BestFigure_Left, '/', BestFigure_Right))

MySQL 实际上并不强制执行检查约束(这就是需要触发器的原因)。如果是的话,你会这样做:

BestFigure Varchar(10) check (Bestfigure regexp '^[0-9]{1,3}/[0-9]{1,6}$')

或者类似的东西。我不清楚你的描述中的“3”和“10”是什么意思。

关于mysql - 向列添加约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53470685/

相关文章:

sql - 两个数据库之间的通信

sql - Rails 4 中的 sanitize_sql_array

php - 我应该每次都为 PHP 创建数据库连接吗?

php - 使用连接从三个表中获取结果,其中一个表包含多个结果

sql - 将两列数据合并为一列,留下空值

sql - 有什么办法可以用范围谓词停止索引搜索?

SQL 默默地将 int 转换为 varchar,但在遇到 varchar 时抛出错误?

mysql - 将数据从 MySQL 迁移到 Orbeon Forms 中的 eXist

mysql - 如何设置logstash.conf?

mysql错误: Warning: #1265 Data truncated for column 'empatt_date' at row 1