Hallo,
EDIT: MySQL 5.0.24 community-nt
Ik ben op het moment een forum aan het maken voor mijn website. Voor dit forum gebruik vier tabellen:
forum_cats - hier staan alle categorieren voor de forums
forum_forums - hierin staan de forums die onder de forum_cats vallen
forum_topics - hierin komen de topics
forum_posts - hierin komen alle posts
Het probleem zit hem in de triggers, ik wil een aantal triggers aan maken voor 2 tabellen zodat wanneer men een topic insert of een post een andere tabel wordt geupdate. Het probleem doet zich voort wanneer ik een trigger wil maken met 2 queries er in, waarin beide de temp tabel wordt gebruikt.
Ik geprobeerd een delimiter toe te voegen ( | en // ) maar dan kwam hij ook weer met sql syntax errors. Als ik hem probeerde aan te maken zonder delimiters, krijg ik een error dat bv. NEW.userID niet meer bestaat omdat waarschijnlijk de "create trigger" transition al voldaan is en hij de tweede query in de trigger body gewoon als een query ziet.
Structuur tabellen:
Triggers
EDIT: MySQL 5.0.24 community-nt
Ik ben op het moment een forum aan het maken voor mijn website. Voor dit forum gebruik vier tabellen:
forum_cats - hier staan alle categorieren voor de forums
forum_forums - hierin staan de forums die onder de forum_cats vallen
forum_topics - hierin komen de topics
forum_posts - hierin komen alle posts
Het probleem zit hem in de triggers, ik wil een aantal triggers aan maken voor 2 tabellen zodat wanneer men een topic insert of een post een andere tabel wordt geupdate. Het probleem doet zich voort wanneer ik een trigger wil maken met 2 queries er in, waarin beide de temp tabel wordt gebruikt.
Ik geprobeerd een delimiter toe te voegen ( | en // ) maar dan kwam hij ook weer met sql syntax errors. Als ik hem probeerde aan te maken zonder delimiters, krijg ik een error dat bv. NEW.userID niet meer bestaat omdat waarschijnlijk de "create trigger" transition al voldaan is en hij de tweede query in de trigger body gewoon als een query ziet.
Structuur tabellen:
SQL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
| CREATE TABLE `forum_cats` ( `catID` bigint(20) NOT NULL auto_increment, `catName` varchar(64) NOT NULL, `catDescription` varchar(255) NOT NULL, PRIMARY KEY (`catID`) ) CREATE TABLE `forum_forums` ( `forumID` bigint(20) NOT NULL auto_increment, `forumName` varchar(64) NOT NULL, `forumDescription` varchar(255) NOT NULL, `forumPosts` bigint(20) NOT NULL, `forumTopics` bigint(20) NOT NULL, `catID` bigint(20) NOT NULL, `userGroupAccess` text NOT NULL, PRIMARY KEY (`forumID`) ) CREATE TABLE `forum_posts` ( `postID` bigint(20) NOT NULL auto_increment, `userID` bigint(20) NOT NULL, `Subject` varchar(128) NOT NULL, `Message` text NOT NULL, `Date` bigint(20) NOT NULL, `topicID` bigint(20) NOT NULL, PRIMARY KEY (`postID`) ) CREATE TABLE `forum_topics` ( `topicID` bigint(20) NOT NULL auto_increment, `topicName` varchar(128) NOT NULL, `userID` bigint(20) NOT NULL, `topicPosts` bigint(20) NOT NULL, `topicViews` bigint(20) NOT NULL, `lastPost` bigint(20) NOT NULL, `sticky` int(11) NOT NULL, `locked` int(11) NOT NULL, `forumID` bigint(20) NOT NULL, PRIMARY KEY (`topicID`) ) CREATE TABLE `users` ( `userID` bigint(20) NOT NULL auto_increment, `username` varchar(32) NOT NULL default '', `password` varchar(32) NOT NULL default '', `Email` varchar(128) NOT NULL, `userPosts` bigint(20) NOT NULL, `userAvatarID` bigint(20) NOT NULL, `userSignature` text NOT NULL, `ip` varchar(15) NOT NULL default '', `hash` varchar(32) NOT NULL default '', `usergroupID` bigint(20) NOT NULL default '0', `lastLogin` bigint(20) NOT NULL, `RealName` varchar(96) NOT NULL, `Age` int(11) NOT NULL, `Country` varchar(96) NOT NULL, `CityVillage` varchar(96) NOT NULL, `Interests` varchar(255) NOT NULL, PRIMARY KEY (`userID`) ) |
Triggers
SQL:
1
2
3
4
5
6
7
8
9
10
11
| CREATE TRIGGER onPostInsert AFTER INSERT ON forum_posts FOR EACH ROW UPDATE forum_topics SET topicPosts = topicPosts + 1 WHERE topicID = NEW.topicID; UPDATE users SET userPosts = userPosts + 1 WHERE userID = NEW.userID; CREATE TRIGGER onPostDelete AFTER DELETE ON forum_posts FOR EACH ROW UPDATE forum_topics SET topicPosts = topicPosts - 1 WHERE topicID = OLD.topicID; UPDATE users SET userPosts = userPosts - 1 WHERE userID = OLD.userID; |
[ Voor 0% gewijzigd door moto-moi op 17-09-2006 14:43 ]