='select
asd
from
flkg'
EXECUTE(@sqlz)
----------
首先,mysql下动态语句不是这样写的,另外,触发器里不能允许返回结果集的.
这里我是希望他能中断更新!
---------------------
你的意思是不是要中断后面的
"
SET
amount
=@amountmm
WHERE
CODE=new.code
AND
whcode
=
new.whcode
"
这部分?
如果是的话,那这样改下:
DELIMITER
$$
USE
`eerp`$$
DROP
TRIGGER
/*!50032
IF
EXISTS
*/
`material_update`$$
CREATE
TRIGGER
`material_update`
AFTER
UPDATE
ON
`sf_material`
FOR
EACH
ROW
BEGIN
IF
new.auditing
=
'Y'
THEN
SET
@amountmm
=
(SELECT
amount-new.amount
FROM
warehouse
WHERE
CODE=new.code
AND
whcode
=
new.whcode)
IF
@amountmm
>=0
THEN
UPDATE
warehouse
SET
amount
=@amountmm
WHERE
CODE=new.code
AND
whcode
=
new.whcode
END
IF
END
IF
END
$$
DELIMITER
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
"我是要中断更新。。不是后面。。。严格说就是这个表sf_material更新和后面的那个表warehouse更新也一起中断!"
---------------------------------------------------------------
因为mysql下触发器内不支持rollback,所以,变换一个方式来处理,如下:
那触发器部分这么写(注意:一定要使表TB_error_rollback在你的库中不允许存在):
CREATE
TRIGGER
`material_update`
BEFORE
UPDATE
ON
`sf_material`
FOR
EACH
ROW
BEGIN
IF
new.auditing
=
'Y'
THEN
SET
@amountmm
=
(SELECT
amount-
new.amount
FROM
warehouse
WHERE
CODE=new.code
AND
whcode
=
new.whcode)
IF
@amountmm
update
TB_error_rollback
set
name=1
END
IF
UPDATE
warehouse
SET
amount
=@amountmm
WHERE
CODE=new.code
AND
whcode
=
new.whcode
END
IF
END
权限问题。,copy份给你!1.首先要运行一下
比如说我的mysql安装在/opt/mysql下面
#cd
/opt/mysql
#scripts/mysql_install_db
--user=mysql
(确认你有mysql用户)
如果不行,检查你的/opt/mysql(这是我的)下面有没有data目录,正确的做法是先启动一次如果OK,再移data目录到别的地方。
两个方法解决
1.如果你没有修改过my.cnf文件,请修改,然后把添加datadir
[mysqld]
port
=
3306
socket
=
/tmp/mysql.sock
datadir
=
/data/mysql/data
这时候,你在/opt/mysql下面建一个软链接到/etc/my.cnf
#cd
/opt/mysql
#ln
-sf
/etc/my.cnf
my.cnf
2.或者你在/opt/mysql下面建一个data的软链接
#cd
/opt/mysql
#ln
-sf
/data/mysql/data
data
如果还不行,你就得查看你已经注册成服务的mysqld
#cd
/etc/init.d/
#vim
mysqld
一般的默认是安装在/usr/local下面的,所以你要修改这个目录的名称及指向。
再不行,你得查一下
/opt/mysql/data/localhost.err文件报什么错。
再按错误来解决。
我之前是少了一个libstdc++.so.5的库,从别的地方copy了一个就OK了
正确流程如下:
#cd
/opt/mysql
#scripts/mysql_install_db
--user=mysql
成功
#cd
../bin/mysqld_safe
&
//这是运行一个demo
查一下进程树
#ps
aux
|
grep
mysql
//如果有就可以运行
/opt/mysql/support-files/mysql.server
start
//修改一下mysql.server文件,这个脚本文件其实就是init.d/mysqld文件,默认路径在/usr/local下面
成功了就可以用了
/opt/mysql/bin/mysql
愿你早日解决些事。
记得权限的问题,--user=mysql来启动创建初始化table,你的data目录要有写权限。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)