Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Procedura tworzaca triggery w mysql
Forum PHP.pl > Forum > Bazy danych > MySQL
max72
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.
Pyton_000
wygenerować sobie skryptem w PHP wink.gif
phpion
Pamiętaj przy tym, że w MySQL możliwy jest tylko 1 trigger na 1 zdarzenie (w obrębie tabeli).
max72
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ć.
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.