首先,我的英语不是那么好,但我认为可能是enogh。好的,我有一个插入程序。
程序
CREATE PROCEDURE `PhotoUpdate`(IN `uid` INT, IN `foto` VARCHAR(255))
BEGIN
INSERT INTO photos (Dosya, UyeID)
VALUES (foto, uid)
ON DUPLICATE KEY UPDATE UyeID = uid;
END
我称之为
Call PhotoUpdate(87,'87_54284.jpg');
照片表是
的 ID Dosya UyeID
1 55_48615.jpg 55
2 87_95165.jpg 87
我试图('uid' - > 87)如果uid等于photos.UyeID,我的意思是如果UyeID = 87则更新行。如果是,则插入。
IF EXISTS (SELECT ID FROM photos WHERE UyeID = uid)
UPDATE photos SET Dosya = foto WHERE UyeID = uid;
ELSE
INSERT INTO photos (Dosya, UyeID) Values(foto, uid);
END IF;
我怎么能这样做?
答案 0 :(得分:0)
尝试替换照片(Dosya,UyeID)VALUES(foto,uid);
答案 1 :(得分:0)
可替换地:
DELIMITER $$
DROP PROCEDURE IF EXISTS `PhotoUpdate`$$
CREATE PROCEDURE `PhotoUpdate`(`uid` INT UNSIGNED, `foto` VARCHAR(255))
BEGIN
INSERT INTO `photos` (`Dosya`, `UyeID`)
VALUES (`foto`, `uid`)
ON DUPLICATE KEY UPDATE `Dosya` = `foto`;
END$$
DELIMITER ;
答案 2 :(得分:0)
如果在UyeID上创建唯一索引,或者甚至更好地删除ID列并使UyeID成为主键,则可以使用INSERT .... ON DUPLICATE KEY UPDATE。
实施例
INSERT INTO photos (Dosya, UyeID)
VALUES ('example.jpg', 87)
ON DUPLICATE KEY UPDATE
Dosya = VALUES(Dosya)
如果您使用VALUES,也可以使用批量插入