1:delimiter // 
2:CREATE TRIGGER `member_point_insert` 
3:AFTER INSERT ON `sdb_member_mattrvalue` 
4:FOR EACH ROW 
5:BEGIN
6:
7:UPDATE `sdb_members` SET point = point+100 
8:WHERE uname = (SELECT value FROM `sdb_member_mattrvalue` WHERE member_id = NEW.member_id AND attr_id = 15
9:)
10:;
11:END;
12://这是我写的触发器。报错信息:错误
您的 SQL 查询可能有错。如果可能的话,以下会列出 MySQL 服务器的错误输出,这可能对您解决问题有一定的帮助作用。ERROR: 未知的标点符号字符串 @ 260
STR: //
SQL: CREATE TRIGGER `member_point_insert` 
AFTER INSERT ON `sdb_member_mattrvalue` 
FOR EACH ROW 
BEGINUPDATE `sdb_members` SET point = point+100 
WHERE uname = (SELECT value FROM `sdb_member_mattrvalue` WHERE member_id = NEW.member_id AND attr_id = 15
)
;
END;
//
SQL 查询:  CREATE TRIGGER `member_point_insert` AFTER INSERT ON `sdb_member_mattrvalue` FOR EACH ROW BEGIN UPDATE `sdb_members` SET point = point+100 WHERE uname = (SELECT value FROM `sdb_member_mattrvalue` WHERE member_id = NEW.member_id AND attr_id = 15 ) ; END; // MySQL 返回: #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 ';
//' at line 10 
------------------------------------------------------------------------------------------
这段代码是在虚拟主机上执行的,因为该数据库用户不够,所有我用最高权限root登录的phpmyadmin执行的。
虚拟主机上的root用户 不支持远程连接。第9行和第10行我是故意分成两行的。就是为了,看看到底是哪的问题。触发器上写的表是 shopex的表。错误信息应该和shopex没什么关系。这个问题一直困扰我老几天了,shopex 不开源,所有这块我只能用触发器来实现。高手请指点一下。小弟在这先谢过了。

解决方案 »

  1.   

    测试没有问题啊。mysql> delimiter //
    mysql> CREATE TRIGGER `member_point_insert`
        -> AFTER INSERT ON `sdb_member_mattrvalue`
        -> FOR EACH ROW
        -> BEGIN
        ->
        -> UPDATE `sdb_members` SET point = point+100
        -> WHERE uname = (SELECT value FROM `sdb_member_mattrvalue` WHERE member_id
    = NEW.member_id AND attr_id = 15
        -> )
        -> ;
        -> END;
        -> //
    Query OK, 0 rows affected (0.11 sec)mysql>
      

  2.   

    你是在什么中执行? 是在mysql的命令行工具中,还是其它什么工具?你试一下这个CREATE TRIGGER `member_point_insert`
    AFTER INSERT ON `sdb_member_mattrvalue`
    FOR EACH ROW
    set @a=1;当您的问题得到解答后请及时结贴.
    http://topic.csdn.net/u/20090501/15/7548d251-aec2-4975-a9bf-ca09a5551ba5.html