2017-11-10 1 views
-4

Bitte welche Abfrage kann ich zum Beispiel wählen, wenn der Benutzer hat 10.500 als sein Gehalt und ich will ihn nur in der Lage sein, 10.000 zurückzuziehen, während die Datenbank das verbleibende Guthaben hält . Ich will nur der Benutzer Geld in Dominanz vonSo wählen Sie Teil von Geld in Datenbank mit sql

Antwort

0

Sie die Mod-Funktion zu überprüfen, können zu sammeln, wenn die Bezeichnung in 1000s zum Beispiel ist

MariaDB [sandbox]> select emp_no,salary, salary % 1000 modsalary from employees; 
+--------+--------+-----------+ 
| emp_no | salary | modsalary | 
+--------+--------+-----------+ 
|  1 | 20000 |   0 | 
|  2 | 39500 |  500 | 
|  3 | 50000 |   0 | 
|  4 | 19500 |  500 | 
|  5 | 10000 |   0 | 
|  6 | 19500 |  500 | 
|  7 | 40000 |   0 | 
|  9 | NULL |  NULL | 
+--------+--------+-----------+ 
8 rows in set (0.00 sec) 

und Trap-Fehler in einem Trigger zum Beispiel

drop trigger if exists wdl; 

delimiter $$ 
CREATE DEFINER=`root`@`localhost` TRIGGER `wdl` before INSERT ON `employees_wdl` FOR EACH 
ROW BEGIN 
declare verr int; 
declare vsalary int; 
set verr = 0; 

if not exists(select 1 from employees where emp_no = new.emp_no) then 
    set verr = 1; 
else 
    select salary into vsalary from employees where emp_no = new.emp_no; 
    if new.amt > vsalary then set verr = 1; end if; 
    if new.amt % 1000 <> 0 then set verr = 1 ; end if; 
end if; 
if verr <> 0 then 
    signal sqlstate '45000' 
     set message_text = 'Wdl amt incorrect or no employee exists';  
end if; 
END $$ 
delimiter ; 

Ergebnis

MariaDB [sandbox]> truncate table employees_wdl; 
Query OK, 0 rows affected (0.22 sec) 

MariaDB [sandbox]> insert into employees_wdl values (2,40000); 
ERROR 1644 (45000): Wdl amt incorrect or no employee exists 
MariaDB [sandbox]> insert into employees_wdl values (2,35000); 
Query OK, 1 row affected (0.02 sec) 

MariaDB [sandbox]> insert into employees_wdl values (2,35200); 
ERROR 1644 (45000): Wdl amt incorrect or no employee exists 
+0

Bitte i. Versteh das überhaupt nicht, wie verwende ich es in PHP bitte – user8917680

+0

Weiß nicht, Wenn es ein PHP-Problem ist, sollten Sie als solches markieren. Ich werde in 10 löschen –