2015-12-03 4 views
1

Итак, я видел множество примеров триггеров в phpMyAdmin, но синтаксис для меня не имеет смысла ... Я просто упрощаю его.Создание ограничения как триггера в phpMyAdmin

Я хочу создать ограничение на phpMyAdmin. У меня две таблицы, одна из них - Funds, а другая - Fund_Shares_Purchased. В Фондах есть атрибут «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; 

Любая помощь или руководство будет высоко ценится!

+0

Что вы ожидаете от использования 'Fund.total_shares'? – Uueerdo

ответ

0

Ниже испытанный пример использования 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, хотя я не проверял это.

+0

, к сожалению, это не похоже. Говорит, что синтаксис SQL неверен в строке IF – djr8yk

+0

См. Обновление. –

Смежные вопросы