我需要根据列中是否存在值在mysql中执行IF/THEN语句。如果存在,我需要对记录执行更新,如果不存在,则应引发错误。
我想检查 siteID 是否确实存在。如何添加“IF EXISTS”语句?
UPDATE Site SET siteName = _siteName,
siteAddress1 = _siteAddress1,
siteAddress2 = _siteAddress2,
siteCity = _siteCity,
siteState = _siteState,
siteZipCode = _siteZipCode,
siteCountryCode = _siteCountryCode,
siteCode1 = _siteCode1,
phoneNumber = _phoneNumber,
website = _website
WHERE siteID = _siteID;
我强烈不鼓励人们这样做
IF EXISTS THEN UPDATE
,因为如果价值不存在,那么无论如何都不会采取任何行动。此外,除非您的事务隔离设置正确,否则可以在执行EXISTS
查询部分和条件正文之间添加/修改记录。我唯一能想到的可能需要它的时间是,如果您需要对存在执行多个操作。无论哪种方式,这都是你将如何做到的:
由于您只想在未执行任何操作时引发错误,因此您实际上可以在更新后检查ROW_COUNT以查看是否实际完成了任何操作:
如果您正在创建一个过程,您可以使用经典
IF EXISTS
格式:您可以将过程与
ROW_COUNT
函数结合起来抛出错误:如果您尝试执行
UPSERT
(插入或更新取决于记录是否存在),那么您还应该考虑使用ON DUPLICATE KEY UPDATE:有关更多信息,请查看IF..THEN和SUBQUERIES WITH EXISTS的文档。