问题描述
我正在接受关于电晕的挑战作为练习练习,没什么复杂的。
此时我在 'person' 表上创建了一个 before 触发器:有 2 个存储过程
> CREATE DEFINER=`root`@`localhost` TRIGGER `person_BEFORE_INSERT`
> BEFORE INSERT ON `person` FOR EACH ROW
> BEGIN
> call pr_checkCitizenship(new.citizenship);
> call pr_isolated(new.isolation_type,new.stateFrom);
> `END
第一个按预期工作,防止插入不是来自塞尔维亚的人(bs 挑战,可能是另一个公民身份,没关系)
>CREATE PROCEDURE `pr_checkCitizenship`(country_cs varchar(40))
> BEGIN
> if country_cs not like "serbian" then
> signal sqlstate '45000' set message_text = "citizenship must be serbian";
> end if;
>END
第二个不起作用,这是关于孤立的日子,可能是 14 或 28。 如果国家有病毒传播的高风险,应该是28,否则应该是14。 重点:如果当前国家在“国家”表中,“isolation_type”应该是28,否则应该是14。(我们假设如果当前国家它在国家/地区表中应该是 28)
我的想法是 在"person"表中我默认设置14,所以如果国家是高风险应该28而不是14
> CREATE PROCEDURE `pr_isolated`(isolation_type enum("14","28"),>
> country_travel varchar(40))
> BEGIN
> /*CHECK IF THE CURRENT COUNTRY BELOGNS TO A COUNTRY*/
> declare hotSpot varchar(40);
> select name from country where name = country_travel into hotSpot;
> if hotSpot <> '' then
> /*INSERT ROW 28 DAYS*/
> set isolation_type = "28";
> end if;
> END
这是“人”表:
顺便说一句: 我有一个要求为那个人留下隔离日期,这就是为什么我有 capture_ts 和 capture_dt 供以后计算该值,我认为这是有道理的
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)