![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 8.09.2014 Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Czy w mysql jest mozliwe utworzenie procedury tworzącej triggery? coś w rodzaju - Kod PROCEDURE insert_trigger_history (IN base VARCHAR(50),IN table VARCHAR(255)) BEGIN DECLARE done INT DEFAULT 0; DECLARE va VARCHAR(255); DECLARE coltab CURSOR FOR SELECT column_name FROM information_schema.columns WHERE table_schema = base and table_name=table; DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; SELECT 'Create insert triiger for table columns' AS info; OPEN coltab; SET @i=1; SET @listtab =''; SET @listnewtab =''; SET @trigger =''; REPEAT FETCH coltab INTO va; IF NOT done THEN IF @i<>1 THEN SET @listtab = CONCAT(@listtab,','); SET @listnewtab = CONCAT(@listnewtab,','); END IF; SET @i = @i+1; SET @listtab = CONCAT(@listtab,va); SET @listnewtab = CONCAT(@listnewtab,'NEW.',va); END IF; UNTIL done END REPEAT; CLOSE coltab; SET @trigger = CONCAT(' TRIGGER trigger_insert_',table,' AFTER INSERT ON ',table,' FOR EACH ROW BEGIN INSERT INTO history_',table,' (@listtab) VALUES (@listnewtab); END; '); PREPARE QUERY FROM @trigger; EXECUTE QUERY; DEALLOCATE PREPARE QUERY; END// DELIMITER; Ewentualnie jaka jest alternatywa aby utworzyć z automatu triigery dla wszystkich tabel? Dzięki za pomoc - bo walcze juz z tym długo. |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
wygenerować sobie skryptem w PHP
![]() |
|
|
![]()
Post
#3
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Pamiętaj przy tym, że w MySQL możliwy jest tylko 1 trigger na 1 zdarzenie (w obrębie tabeli).
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 8.09.2014 Ostrzeżenie: (0%) ![]() ![]() |
No niestety musi to być zrobiobe z poziomu mysql'a bez skryptów php, perl czy shell'a
Myslałem jeszcze aby w jakis sposób zapisać definicje trigera w pamieci albo pliku a potem wykonac jako sql, ale nie bardzo wiem jak to zrobić. przy tym zadaniu sie zapetliłem :-) i nie mogę nic twórczego wymysleć. |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 19.07.2025 - 20:38 |