MySQL trigger before insert, numery faktur
Rozwiązanie proste, ale wymagał jednej zmiany w konfiguracji my.cnf, dokładniej thread_stack bo wartość 64K to deko mało. Całość bazuje na założeniu, że numer faktury to ROK/NUMER, gdzie numer jest autoinkrementowaną wartością. Tablica t_faktury, w której numer faktury jest reprezentowany za pomocą pola fvat_no trigger dla niej i procedura poniżej: DROP TRIGGER IF EXISTS fvat_number; DROP PROCEDURE IF EXISTS generuj_fvatno; DELIMITER $$ CREATE PROCEDURE generuj_fvatno(out numerek VARCHAR(30)) BEGIN SELECT CONCAT(DATE_FORMAT(CURDATE(), '%Y'),'/',COUNT(fvat_no) + 1) INTO numerek FROM t_faktury WHERE SUBSTRING_INDEX(fvat_no, '/', 1) = DATE_FORMAT(CURDATE(), '%Y') LIMIT 1 ; END$$ CREATE TRIGGER fvat_number BEFORE INSERT ON t_faktury FOR EACH ROW BEGIN CALL generuj_fvatno(@out); IF @out = NULL THEN SET NEW.fvat_no = CONCAT(DATE_FORMAT(CURDATE(), '%Y'),'/', 1); ELSE SET NEW.fvat_no = @out; END IF; END$$