【发布时间】:2009-03-17 07:34:16
【问题描述】:
我创建了一个程序并运行它,但它显示了一些语法问题,你能帮帮我吗?
我的程序是这样的:
**DELIMITER $$
CREATE PROCEDURE TestAdd(
in mODE varchar(10),
in Id int,
in AttName varchar(10),
in AttValues Varchar(10)
)
IF EXISTS (SELECT * FROM AttTable WHERE id=Id) THEN
SET Mode='Modify'
ELSE
SET Mode='Add'
Start Transaction
BEGIN
IF (mODE='Add') THEN
insert into atttable values (Id, AttName, AttValue);
ELSE (if Mode='Modify') then
update AttTable set AttName=AttName, AttValue= AttValue where Id=Id;
END IF
END
$$
Delimiter ;**
【问题讨论】:
-
你需要告诉我们它是如何失败的。
-
它应该做什么?它实际上在做什么?为什么它没有被格式化为至少一点可读性?
-
另外,请查看 SELECT FOR UPDATE 语法,否则您最终会遇到竞争条件
-
只需使用 INSERT...ON DUPLICATE KEY UPDATE 语法,整个事情就可以变得更简单
-
@yaauie:你应该把它作为答案发布,这是解决这个问题的正确方法......更不用说你应该得到一些代表来努力阅读这个烂摊子:)