mysql - 在 phpMyAdmin 中创建一个约束作为触发器

标签 mysql triggers phpmyadmin

所以我在 phpMyAdmin 中看到了很多触发器示例,但语法对我来说没有意义......我过于简单化了它。

我想在 phpMyAdmin 上创建一个约束。我有两张表,一张是 Funds,一张是 Fund_Shares_Purchased。在Funds中,有一个属性“total_available”,就是可以购买的股票总数。在 Fund_Shares_Purchased 中,有一个属性“quantity”,即某人购买了多少股。这两个表在“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;

如有任何帮助或指导,我们将不胜感激!

最佳答案

下面是一个使用 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 中,尽管我还没有测试过。

关于mysql - 在 phpMyAdmin 中创建一个约束作为触发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34055550/

相关文章:

mysql - 'on update'可以用在哪里?

mysql - phpmyadmin 中无法识别的关键字

phpmyadmin - 如何在phpmyadmin中自动美化设计器

sql - 无法绑定(bind)多部分标识符 "i.charged_amount"

Sql 触发器 - 它属于哪个表?

php - 如何从本地机器导出存储过程并导入到服务器?

sql - 如何从同一个表中的不同字段计算表中的数字?

mysql - 在左连接中包含数据不存在的行

datetime - mySql 对列求和并仅返回过去 10 分钟内包含 和 的条目

php - 结合两个mysql查询