然后用后台去接受一下这个对象,接受到之后,就可以进行 *** 作了,获得数据库连接,查询那个数据,然后用update直接拼语句更新也行,用生成的方法也行,然后返回一个受影响的数据,用int接受一下,判断是否等于0
,如果为0,没成功,不为
0,成功,ok,就这样,没有写代码,如果需要可以问我
你那样写的话参数看着太多了,建议用对象吧
@sqlz='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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)