#45427548 · 16 Aug 2015, 14:29 · · პროფილი · პირადი მიმოწერა · ჩატი
გეხვერწებით მომეხმარეთ რა
მოკლედ გავაკეთე 1 ტრიგერი რომელიც insert-ის წინ ამოწმებს თუ არსებობს ჩანაწერი მერე ვაკეთებ ასე
CODE | SET msg = "DIE: username exists"; SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = msg;
|
ეს მუშაობს და მაძლევს კოდს 1644
ნუ კაი
ჩაწერა ინფორმაცია ეხლა მინდა რომ ჩაწერის შემდეგ გააკეთოს insert actions_log ცხრილში მაგრამ აქ გავიჭედე იმაზე რომ მომხმარებლის id აზრზე არ ვარ როგორ მივცე
აი ასეთი კოდია
SQL | DELIMITER $$
DROP TRIGGER /*!50032 IF EXISTS */ `before_add_user`$$
CREATE /*!50017 DEFINER = 'db_name'@'%' */ TRIGGER `before_add_user` BEFORE INSERT ON `user` FOR EACH ROW BEGIN DECLARE msg VARCHAR(255); IF (SELECT COUNT(*) FROM `user` WHERE (`username` = new.username)) > 0 THEN SET msg = "DIE: username exists"; SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = msg; END IF; END; $$
DELIMITER ;
|
ეს მუშაობს
მერე ვაკეთებ ამას
SQL | INSERT INTO `user` (`username`, `password`, `salt`, `email`) VALUES ('shalvasoft', '156', 'ihgbol', 'jgfiug8tg');
|
თუ არის ეგეთი უზერი დამიწერს ერორის კოდს 1644
ნუ ესეც მუშაობს
მარა ეხლა ამის მერე მინდა ესეთი რაღაცა
SQL | DELIMITER $$
CREATE /*[DEFINER = { user | CURRENT_USER }]*/ TRIGGER `db_name`.`after_add_user` AFTER INSERT ON `db_name`.`user` FOR EACH ROW BEGIN INSERT INTO `user_action`(`user`, `action`) VALUES (new.user, 1); END$$
DELIMITER ;
|
მგონი იდეას უნდა მიხვდეთ რაც მინდა მარა ეს user არის ინტეჯერი და არის სულ სხვა ტაბლიცა და ეგ როგორ ვუთხრა რომ ამ უზერმა გააკეთა მაგი?
ანუ როცა insert-ს ვუშვებ იქედან უნდა გავაყოლო მარა როგორ?
გთხოვთ გამარკვიეთ რა...
კიდევ უფრო რომ დავკონკრეტდე ბოლო ტრიგერის შექმნისას მაძლევს აი ამ ერორს
QUOTE | Error Code: 1054 Unknown column 'user' in 'NEW'
|
რა ჯანდაბა უნდა ვერ გავიგე
This post has been edited by ShalvaSoft on 16 Aug 2015, 15:22
--------------------
ვებ პროგრამისტების საყურადღებოდ http://jobs.ge/119262/
|