Probleemstelling
Ik heb de volgende tabellen:
Database structuur: products
Database structuur: credits
Database structuur: tmp
Wat gebruik ik?
Ik gebruik een wamp server waarin ik de triggers aanmaak voor de verschillende tabellen en de records maak ik aan in een (C-sharp) WPF applicatie.
Versies
Can't update 'products' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
Wat heb ik al uitgeprobeerd?
Ik heb geprobeerd om ook de waardes in een andere tabel te zetten, waarnaar ik vanuit de andere tabel de waardes weer heb geprobeerd terug in te voeren, maar ook dat is niet gelukt:
Het zou heel erg fijn zijn als iemand van jullie mij hiermee kan helpen.
Alvast dank ik jullie voor het nemen van de moeite hiervoor.
Met vriendelijke groet,
umask
Ik heb de volgende tabellen:
- products
- credits
- tmp*edit: kan genegeerd worden (werd alleen medegedeeld, omdat de tabel wel aanwezig is)
Database structuur: products
Naam | Type | Collatie | Leeg | Standaardwaarde |
pID (Primary Key) | int(11) | N/A | Nee | Geen |
cID (Index) | int(11) | N/A | Nee | Geen |
cName | varchar(20) | latin1_swedish_ci | Ja | NULL |
pName | varchar(50) | latin1_swedish_ci | Ja | NULL |
Database structuur: credits
Naam | Type | Collatie | Leeg | Standaardwaarde |
cID | int(11) | N/A | Nee | Geen |
cName | varchar(20) | latin1_swedish_ci | Nee | Geen |
Database structuur: tmp
Naam | Type | Collatie | Leeg | Standaardwaarde |
pID | int(11) | N/A | Nee | Geen |
cID | int(11) | N/A | Nee | Geen |
cName | varchar(20) | latin1_swedish_ci | Ja | NULL |
Wat gebruik ik?
Ik gebruik een wamp server waarin ik de triggers aanmaak voor de verschillende tabellen en de records maak ik aan in een (C-sharp) WPF applicatie.
Versies
- phpMyAdmin: 4.7.9
- PHP: 5.6.35
- MySQL: 5.7.21
- VisualStudio: 2017
Can't update 'products' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
Wat heb ik al uitgeprobeerd?
Nr. | Definitie | Trigger van tabel | MySQL Query |
1 | AFTER/BEFORE UPDATE of INSERT | products | UPDATE Products INNER JOIN credits ON Products.cID = Credits.cID SET Products.cName = Credits.cName WHERE Products.cID = Credits.cID; |
2 | BEFORE INSERT | products | UPDATE Products INNER JOIN Credits ON Products.cID = Credits.cID SET NEW.cName = Credits.cName WHERE Products.cID = Credits.cID; |
3 | AFTER INSERT | products | SET Products.cName = (SELECT Credits.cName FROM credits) WHERE Products.cID = Credits.cID; |
4 | AFTER/BEFORE UPDATE of INSERT | products | BEGIN CREATE Table tmp (pID int(11),cID int(11),cName nvarchar(20)); INSERT INTO tmp (products.cName) SELECT tmp.cName FROM tmp INNER JOIN products ON tmp.pID = products.pID WHERE tmp.pID = products.pID; DROP TABLE tmp; END |
5 | AFTER/BEFORE INSERT | products | UPDATE products AS pd INNER JOIN credits AS cg ON pd.cID = cg.cID SET pd.cName = cg.cName WHERE pd.cName = cg.cName; |
6 | AFTER/BEFORE INSERT | products | UPDATE products AS pd INNER JOIN credits AS cg ON pd.cID = cg.cID SET NEW.cName = cg.cName WHERE pd.cName = cg.cName; |
7 | AFTER/BEFORE INSERT | products | CREATE TABLE tmp (pID int(11), cName varchar(22)) SELECT pID FROM products; INSERT INTO products (cName) SELECT pID, name FROM tmp; DROP TABLE IF EXISTS tmp; |
Ik heb geprobeerd om ook de waardes in een andere tabel te zetten, waarnaar ik vanuit de andere tabel de waardes weer heb geprobeerd terug in te voeren, maar ook dat is niet gelukt:
Nr. | Definitie | Trigger van tabel | MySQL Query |
8 | AFTER INSERT | products | BEGIN INSERT INTO tmp (tmp.pID, tmp.cID, tmp.cName) VALUES (NEW.pID, NEW.cID, NEW.cName); UPDATE tmp INNER JOIN Credits ON tmp.cID = Credits.cID SET tmp.cName = Credits.cName WHERE tmp.cID = Credits.cID; END |
9 | AFTER INSERT | tmp | UPDATE Products INNER JOIN tmp ON Products.cID = tmp.cID SET Products.cName = tmp.cName WHERE Products.cID = tmp.cID; |
10 | AFTER INSERT | tmp | INSERT INTO products (cName) SELECT cName FROM tmp; |
11 | BEFORE INSERT | tmp | INSERT INTO products (cName); SELECT NEW.cName FROM tmp; |
12 | AFTER/BEFORE INSERT | tmp | INSERT INTO products (products.cName) SELECT tmp.cName FROM tmp INNER JOIN products ON products.pID = tmp.pID WHERE products.pID = tmp.pID; |
13 | AFTER/BEFORE INSERT | tmp | INSERT INTO products (products.cName) SELECT tmp.cName FROM tmp INNER JOIN products ON tmp.pID = products.pID WHERE products.pID = tmp.pID; |
14 | AFTER/BEFORE INSERT | tmp | INSERT INTO products(products.cName) VALUES ( SELECT tmp.cName FROM tmp INNER JOIN products ON products.pID = tmp.pID WHERE products.pID = tmp.pID ); |
15 | AFTER/BEFORE INSERT | tmp | INSERT INTO products (cName) SELECT cName FROM credits WHERE NEW.cID = credits.cID; |
Het zou heel erg fijn zijn als iemand van jullie mij hiermee kan helpen.
Alvast dank ik jullie voor het nemen van de moeite hiervoor.
Met vriendelijke groet,
umask
[ Voor 21% gewijzigd door umask op 21-05-2019 23:09 ]