在 phpMyAdmin 中创建一个约束作为触发器
Posted
技术标签:
【中文标题】在 phpMyAdmin 中创建一个约束作为触发器【英文标题】:Creating a Constraint as a Trigger in phpMyAdmin 【发布时间】:2016-03-07 10:48:33 【问题描述】:所以我在 phpMyAdmin 中看到了很多触发器示例,但语法对我来说没有意义......我过于简单化了。
我想在 phpMyAdmin 上创建一个约束。我有两张表,一张是 Funds,一张是 Fund_Shares_Purchased。在 Funds 中,有一个属性“total_available”,即可以购买的股票总数。在 Fund_Shares_Purchased 中,有一个属性“数量”,即某人购买了多少股。这两个表在“Fund_Name”属性上相关。
我尝试了以下...
CREATE TRIGGER limitFundShares
BEFORE INSERT ON Fund_Shares_Purchased
BEGIN
IF (Fund.total_shares < NEW.quantity)
THEN
RAISERROR("You can't buy that many shares of the fund!")
END IF;
END;
任何帮助或指导将不胜感激!
【问题讨论】:
您对Fund.total_shares
的使用有何期待?
【参考方案1】:
下面是一个使用 mysql 命令行客户端的测试示例:
create table Fund(total_shares int);
insert into Fund values(10);
create table Fund_Shares_Purchased(quantity int);
delimiter //
create trigger LimitFundShares
before insert on Fund_Shares_Purchased
for each row
begin
if ((select total_shares from Fund) < new.quantity)
then
signal sqlstate '45000'
set message_text = "You can't buy that many shares of the fund!";
end if;
end//
delimiter ;
insert into Fund_Shares_Purchased values (5);
insert into Fund_Shares_Purchased values (15);
insert into Fund_Shares_Purchased values (7);
select * from Fund_Shares_Purchased;
您应该能够将触发器创建语句粘贴到 phpMyAdmin 中,尽管我还没有测试过。
【讨论】:
不幸的是,它似乎没有。说 IF 行周围的 SQL 语法错误以上是关于在 phpMyAdmin 中创建一个约束作为触发器的主要内容,如果未能解决你的问题,请参考以下文章
如何在 phpmyadmin 中创建触发器,插入后将更新花药表中的字段?