mysql 十进制权限_想要将MySQL字段的值限制为特定范围(十进制值)

我想将表格行中的字段值限制为特定范围.是否可以将我的relationship_level字段限制为[0.00到1.00]?

目前我正在使用DECIMAL(2,2),它不允许DECIMAL(1,2),因为M必须是> = D.我假设数据类型DECIMAL(2,2)实际上将允许来自00.00到99.99?

CREATE TABLE relationships (

from_user_id MEDIUMINT UNSIGNED NOT NULL,

to_user_id MEDIUMINT UNSIGNED NOT NULL,

relationship_level DECIMAL(2,2) UNSIGNED NOT NULL,

PRIMARY KEY (from_user_id, to_user_id),

FOREIGN KEY (from_user_id) REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE NO ACTION,

FOREIGN KEY (to_user_id) REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE NO ACTION,

INDEX relationship_from_to (to_user_id, from_user_id, relationship_level)

) ENGINE = INNODB;

有没有更好的方法来做到这一点,谁能预见到任何限制?

非常感谢!

解决方法:

您可以使用触发器在MySQL中模拟检查约束.

例如,如果要强制将大于1.00的所有值存储为1.00,则可以使用以下两个触发器执行此操作:

DELIMITER $$

DROP TRIGGER IF EXISTS tr_b_ins_relationships $$

CREATE TRIGGER tr_b_ins_relationships BEFORE INSERT ON relationships FOR EACH ROW BEGIN

IF new.relationship_level > 1

THEN

SET new.relationship_level = 1;

END IF;

END $$

DELIMITER ;

DELIMITER $$

DROP TRIGGER IF EXISTS tr_b_upd_relationships $$

CREATE TRIGGER tr_b_upd_relationships BEFORE UPDATE ON relationships FOR EACH ROW BEGIN

IF new.relationship_level > 1

THEN

SET new.relationship_level = 1;

END IF;

END $$

DELIMITER ;

标签:mysql,decimal,database-schema,sqldatatypes

来源: https://codeday.me/bug/20190521/1146366.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值