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
Bitte i. Versteh das überhaupt nicht, wie verwende ich es in PHP bitte – user8917680
Weiß nicht, Wenn es ein PHP-Problem ist, sollten Sie als solches markieren. Ich werde in 10 löschen –