Ich benutze Version 5.5.47 (Ubuntu) von mysql. Ich versuche einen Trigger zu erstellen, der vor dem Einfügen in die Tabelle überprüft wird. Meine Idee ist: Wenn Wert von LoginName
Spalte und Wert von Email
Spalte existiert, einfügen einen neuen Datensatz wird nicht implementiert werden.Wie erstellt man einen Trigger, um zu überprüfen, ob ein Datensatz nicht existiert?
Tabelle:
CREATE TABLE IF NOT EXISTS `MemberProfile` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`LoginName` varchar(255) NOT NULL,
`Password` varchar(255) NOT NULL,
`FirstName` varchar(255) DEFAULT NULL,
`LastName` varchar(255) DEFAULT NULL,
`Email` varchar(255) DEFAULT NULL,
`Birthday` date DEFAULT NULL,
`Gender` int(11) DEFAULT NULL COMMENT '1: nam , 2 nu',
`Address` varchar(255) DEFAULT NULL,
`ProfileID` text,
`ProfileURL` text,
`AvatarImageURL` text,
`CoverImageURL` text,
`ActiveTime` datetime NOT NULL,
PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=11 ;
ich dies getan haben:
CREATE TRIGGER verifyExists BEFORE INSERT ON MemberProfile
FOR EACH ROW
BEGIN
IF NEW.Email,NEW.LoginName not in (
select *
From MemberProfile AS A
where (NEW.LoginName = A.LoginName and NEW.Email = A.Email)
) THEN
CALL `Insert not allowed`;
END IF;
END;
Fehler.
MySQL said: Documentation
1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use
near 'NEW.LoginName not in ( select * From MemberProfile AS ' at line 4
Meiner Meinung nach, NEU [colu mns] ist ein Argument der Einfügeaktion. Ich weiß es nicht genau. Kann jemand helfen?
warum war.. mein Post negativ? – Loint