Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Trigger i przerwanie inserta
Forum PHP.pl > Forum > Bazy danych > MySQL
snemeii
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
Zawsze możesz dać nie BEFORE a AFTER i kasować ostatni wpis wink.gif
snemeii
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
Od wersji 5.5 Mysqla można rzucać sygnały AFAIK http://dev.mysql.com/doc/refman/5.5/en/signal.html


Możesz wtedy jeśli wykryjesz że suma jest większa od określonej dać:

  1. -- twój kod
  2. IF (suma > 10000) THEN
  3. SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Za duza suma';
  4. -- dalszy kod



To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.