snemeii
13.12.2012, 10:41:44
Borykam się z pozoru prostym problemem i nie mogę sobie ztym poradzić. Mianowicie jest aplikacja webowa i tabela (XX) do której ludzie dodają jakieś kwoty pieniężne... Rzecz ma być taka, że jeżeli suma tych kwot wpisanych przekroczy 10.000 to ma niepozwalać wpisywać kolejnych.
Próbuję znaleźć rozwiązanie z Triggerem, ale jak zrobić by trigger BEFORE INSERT przerywał operację jeżeli SUM > 10.000 ?
Sephirus
13.12.2012, 10:46:01
Zawsze możesz dać nie BEFORE a AFTER i kasować ostatni wpis
snemeii
13.12.2012, 10:50:53
Dobrze by bylo, żeby uzytkownik wiedział ze coś jednak nie weszło...
Mogę z poziomu aplikacji sprawdzać czy kwota nie została przekroczona, jednak myślalem ze gdy zrobię to na poziomie bazy będzie to znaczniej bezpieczniejsze, tym bardziej że dodawać może 100 userów na raz.
Sephirus
13.12.2012, 11:09:38
Od wersji 5.5 Mysqla można rzucać sygnały AFAIK
http://dev.mysql.com/doc/refman/5.5/en/signal.htmlMożesz wtedy jeśli wykryjesz że suma jest większa od określonej dać:
-- twój kod
IF (suma > 10000) THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Za duza suma';
-- dalszy kod