MySQL Trigger

R

Ruthy

Hallo Zusammmen!

Hab gestern versucht einen Trigger zu erstellen und ist mir bis auf ein kleines Detail gelungen.
Der Trigger sieht folgendermassen aus:

Code:
DELIMITER |

DROP TRIGGER IF EXISTS addProtocol|
CREATE TRIGGER addProtocol
AFTER INSERT ON protocol
FOR EACH ROW
BEGIN
	DECLARE toleranceconfigid INT;
	DECLARE done INT DEFAULT 0;

  
	DECLARE toleranceconfigs CURSOR FOR 
	SELECT TOLERANCECONFIG_ID FROM toleranceconfig WHERE ACTIVE ='1' AND MANUFACTURERNUMBER_ID = 'NEW.MANUFACTURERNUMBER_ID';
	DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
	OPEN  toleranceconfigs;
	REPEAT
		FETCH toleranceconfigs INTO toleranceconfigid;
		IF NOT done THEN 
			INSERT INTO protocol_toleranceconfig (PROTOCOL_ID, TOLERANCECONFIG_ID)
			VALUES (NEW.PROTOCOL_ID, toleranceconfigid);
		END IF;
	UNTIL done END REPEAT;
		
 END |

Leider funktioniert der Teil mit der NEW.MANUFACTURER_ID nicht. Eventuell hab ich dort die Philosophie falsch verstanden. Kann NEW nicht alle Zeilen des zuletzte eingefügten Datensatzes lesen ?Sobald ich die NEW.MANUFACTURER_ID durch eine statische ersetzte, funktioniert das Ganze.

Wäre froh um Eure Hilfe.
Danke, schon im vorraus.

Hab jetzt noch mal eine Weile gebastelt.

Jetzt sieht das ganze so aus

Code:
DELIMITER |

DROP TRIGGER IF EXISTS addProtocol |
CREATE TRIGGER addProtocol
AFTER INSERT ON protocol
FOR EACH ROW
BEGIN
	DECLARE toleranceconfigid INT;
	DECLARE done INT DEFAULT 0;
	DECLARE mfnr INT;
	DECLARE mfnr2 INT;

  
	DECLARE toleranceconfigs CURSOR FOR 
	SELECT TOLERANCECONFIG_ID, MANUFACTURERNUMBER_ID FROM toleranceconfig WHERE ACTIVE ='1';
	DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
	OPEN  toleranceconfigs;
	REPEAT
		FETCH toleranceconfigs INTO toleranceconfigid, mfnr;
		IF NOT done THEN 
			IF (NEW.MANUFACTURERNUMBER_ID = mnrf THEN
				INSERT INTO protocol_toleranceconfig (PROTOCOL_ID, TOLERANCECONFIG_ID)
				VALUES (NEW.PROTOCOL_ID, toleranceconfigid);
			END IF;
		END IF;
	UNTIL done END REPEAT;
 END |

Nur müsste ich jetzt irgendwie hinkriegen in der IF ANWEISUNG die Typen zu Casten, damit ich sie vergleichen kann. Die richtigen Werte beinhalten Sie, das habe ich überprüft.
Ich erhalte nämlich folgenden Fehler:

#1054 - Unknown column 'mnrf' in 'field list'
 
Code:
IF (NEW.MANUFACTURERNUMBER_ID = mnrf THEN

beinhaltet 2 Fehler:

( vor dem NEW muss weg und das = muss == heissen.

Code:
IF NEW.MANUFACTURERNUMBER_ID == mnrf THEN
 
Zurück