2

我正在尝试以下操作,但无法找出问题所在:

IF( IFNULL(
      SELECT * FROM vertreter AS ag 
      WHERE ag.iln = param_loginID 
      AND ag.verkaeufer = param_sellerILN
      ),
      UPDATE vertreter AS agUp
      SET agUp.vertreterkennzeichen
      WHERE agUp.iln = param_loginID AND agUp.verkaeufer = param_sellerILN
      ,
      INSERT INTO vertreter AS agIn
          ( agIn.iln, agIn.verkaeufer, agIn.vertreterkennzeichen, agIn.`status` )
      VALUES
          ( param_loginID, param_sellerILN, param_agentID, 'Angefragt' )
      );

问题:
这是否有可能检查 SELECT 是否返回 NULL 然后根据 A 或 B 执行?

4

1 回答 1

1

您需要创建唯一的复合索引(iln + verkaeufer)

CREATE UNIQUE INDEX vertreter_iln_verkaeufer ON vertreter (iln, verkaeufer)

http://dev.mysql.com/doc/refman/5.0/en/create-index.html

然后您可以在一个查询中执行此操作:

INSERT INTO vertreter
(agIn.iln, agIn.verkaeufer, agIn.vertreterkennzeichen, agIn.`status`)
VALUES (param_loginID, param_sellerILN, param_agentID, 'Angefragt')
ON DUPLICATE KEY UPDATE vertreterkennzeichen = param_agentID

文档:http ://dev.mysql.com/doc/refman/5.5/en/insert-on-duplicate.html

于 2012-06-21T23:25:25.823 回答