Register for your free account! | Forgot your password?

You last visited: Today at 12:27

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



SQL TRIGGER

Discussion on SQL TRIGGER within the Web Development forum part of the Coders Den category.

Reply
 
Old   #1
 
.Like's Avatar
 
elite*gold: 0
Join Date: Sep 2010
Posts: 389
Received Thanks: 33
SQL TRIGGER

Hallo,
ich möchte in meiner DB einen TRIGGER erstellen.

Und zwar soll dieser aktiviert werden wenn, in der tabelle "Account" ( enthält: ID (PK), AccName, Level ) das level auf "35" gesetzt wird. Anschließend soll in der Tabelle " Switch " ein neuer eintrage mit ID(Fremdschlüssel von Account), und Anzahl 3 erstellt werden.

Ich habe es mir ungefähr so vorgestellt, nur leider funktioniert meine vorstellung nicht Wäre auch zu schön.

PHP Code:
CREATE TRIGGER switcher_update
      AFTER UPDATE
      ON account
      
FOR EACH ROW BEGIN
            
IF `level` = "20" THEN
                  INSERT INTO switcher 
(IDSwitcherVALUES (new.id3); 
Kann mir jemand helfen?
.Like is offline  
Old 05/02/2014, 00:15   #2
 
elite*gold: 0
Join Date: Feb 2010
Posts: 72
Received Thanks: 32
1. Nimm bitte mal den ganzen Ausdruck, und setz ihn in einen Block mit einem anderen Delimiter.
Code:
DELIMITER //;
<HIER IST DEIN STATEMENT>
//
DELIMITER ;//
2. Einen IF und BEGIN Block solltest du mit END IF und END schließen
Code:
BEGIN
IF
#####
END IF;
END;

Ich bin leider gerade nicht zuhause, also habe ich keine Möglichkeit es zu probieren, aber ich vermute das der Punkt 1 dein Fehler ist.
flogi333 is offline  
Thanks
1 User
Old 05/02/2014, 11:18   #3
 
.Like's Avatar
 
elite*gold: 0
Join Date: Sep 2010
Posts: 389
Received Thanks: 33
Vielen Dank, das hat erstmal schon geholfen.

Ich bin auch weiter vorran gekommen. Habe eine Funktion erstellt

PHP Code:
DELIMITER //
CREATE PROCEDURE test1
BEGIN
DECLARE mid INTEGER;
DECLARE 
ALT INTEGER;
SELECT `AlterFROM tabelle1 WHERE `Alter` = 18 INTO ALT;
IF (`
ALT` >= 18THEN
SELECT ID FROM tabelle1 WHERE 
`alter` = 18 INTO mid;
INSERT INTO tabelle2 (`ID`,`Punkte`) VALUES (mid,"100");
ELSE 
SELECT from tabelle1;
END IF;
END //
DELIMITER 
Das funktioiert auch gut, sobald das alter einer Person auf 18 gesetzt wird und ich die funktion ausführe. Wird automatisch ein Eintrag in tabelle 2 mit der jeweiligen ID und dem Punktestand 100 erstellt.

Meine letztes Problem ist nun, sobald mehrere Personen 18 sind und ich diese Funktion ausführe kommt eine Fehlermeldung.

Code:
#1172 - Result consisted of more than one row
PS: Nicht wundern Spalten Namen sind anders. && Die ELSE funktion ist vorerst sinnlos.
.Like is offline  
Old 05/02/2014, 13:07   #4
 
elite*gold: 0
Join Date: Feb 2010
Posts: 72
Received Thanks: 32
Das Problem ist das du in die Variable ALT alle Werte hineinschreibst, bei denen der Wert 18 ist. Die Variable kann aber nur einen Wert enthalten, und falls mehrere Spalten diesen Wert aufweisen tritt der Fehler auf.

Du kannst das z.B. mit einem INSERT und einem SELECT als Subquery lösen.
e.G.
Code:
INSERT 
INTO tabelle2 
(`ID`,`Punkte`) 
SELECT ID, "100" 
FROM tabelle1 
WHERE alter >= 18;
Damit würden alle Spalten mit dem Wert 18 in die tabelle2 geschrieben.


Außerdem hat deine IF Verzweigung keinen Sinn gemacht, denn du holst alle Werte, die bei Alter GENAU 18 haben, und überprüfst dann, ob es welche gibt die größer oder gleich 18 sind
Code:
SELECT `Alter` FROM tabelle1 WHERE `Alter` = 18 INTO ALT;
IF (`ALT` >= 18) THEN
#edit So viele Rechtschreibfehler.. ahhhhh o.O
flogi333 is offline  
Thanks
1 User
Old 05/02/2014, 16:26   #5
 
.Like's Avatar
 
elite*gold: 0
Join Date: Sep 2010
Posts: 389
Received Thanks: 33
Hm so funktioniert es leider nicht. Nach INSERT INTO muss VALUES folgen und keine abfrage, so kenn ich es zumindest, und so funktioniert es leider auch nur.

Aber du hast recht war vieles sinnfrei der neue code sieht so aus :

PHP Code:
BEGIN
DECLARE ALT INTEGER;
SELECT `IDFROM tabelle1 WHERE `Alter` >= 18 INTO ALT;
INSERT INTO tabelle2 (`ID`,`Punkte`) VALUES (ALT,"100");
END 
Das funktioniert auch, nur leider noch nicht mit mehreren einträgen
.Like is offline  
Old 05/02/2014, 16:59   #6
 
elite*gold: 0
Join Date: Feb 2010
Posts: 72
Received Thanks: 32
Nun es sollte theoretisch funktionieren.
Google's erster link ist:
flogi333 is offline  
Thanks
1 User
Old 05/03/2014, 11:28   #7
 
.Like's Avatar
 
elite*gold: 0
Join Date: Sep 2010
Posts: 389
Received Thanks: 33
Super ! Es funktioniert ! :-)
Allerdings noch ein Problem, nun werden zwar auch mehrer Zeilen übertragen, allerdings auch schon übertragene ID's werden auch erneut übertragen beim wiederholen der Funktion.

Lässt sich das vermeiden?

Lässt sich das vermeiden?[/quote]

PHP Code:
BEGIN
INSERT INTO tabelle2 
(`ID`,`Punkte`)SELECT ID,100 FROM tabelle1 WHERE `alter` = 20;
END 
.Like is offline  
Old 05/03/2014, 12:08   #8
 
elite*gold: 0
Join Date: Feb 2010
Posts: 72
Received Thanks: 32
Code:
AND ID NOT IN(SELECT ID FROM tabelle2)
Wenn du das an dein WHERE anhängst, überträgt er nur diejenigen, dessesn id noch nicht in der tabelle2 sind
flogi333 is offline  
Thanks
1 User
Old 05/03/2014, 12:44   #9
 
.Like's Avatar
 
elite*gold: 0
Join Date: Sep 2010
Posts: 389
Received Thanks: 33
Ah klar hätte ich auch selber drauf kommen können, vielen dank !
.Like is offline  
Reply


Similar Threads Similar Threads
MW2 Trigger-Aim (no WH)
03/27/2013 - Call of Duty Hacks, Bots, Cheats & Exploits - 12 Replies
MW2 Trigger-Aim (no WH) https://www.virustotal.com/de/file/a756c4ec0d6a32 cae0e342bccc099f41df8b8a4c01b4eb0b3a7ded70c4eef423 /analysis/1364154018/
CS:S Trigger Bot !! [ HOT ] bY F!n4L
12/15/2012 - Counter-Strike Hacks, Bots, Cheats & Exploits - 32 Replies
TRIGGER !!! VAC UNDETECTED 100% Viren Frei !! Downlaod Link : Download: External_Trigger_by_Fn4L.rar | xup.in



All times are GMT +1. The time now is 12:27.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.