我有一个 vert 表和一个医疗表,它们具有一对多关系,并且 ID 会自动递增。
CREATE TABLE vet(
vetID INT NOT NULL AUTO_INCREMENT,
vetPractice varchar(35),
Address varchar(150),
contactNumber varchar (15),
PRIMARY KEY (VetID)
);
CREATE TABLE medical(
medicalID INT NOT NULL AUTO_INCREMENT,
medication VARCHAR (200),
PRIMARY KEY (medicalID),
FOREIGN KEY (vetID) REFERENCES vet(vetID)
);
用户可以输入 vert 的详细信息,我想要一个查询来确定;
如果输入的 vert 详细信息已存在,则使用输入的 vert ID 更新 vetID(medical) 中的外键。
否则,如果 vet 不存在,则创建一个新的 vet,并使用新创建的 vetID 更新 vetID(medical) 中的外键。
我有以下查询
IF EXISTS(SELECT * FROM vet WHERE vetPractice = "inputValue")
THEN
UPDATE medical set value vetID = (Select max(vetID) from vet)
ELSE
INSERT INTO vet values (null, "newVetPractice", "NewAddress", "newContactNumber", "NewEmergencyNumber" );
Then
update medical set value vetID = (Select max(vetID) from vet);
END IF;
但是,我不熟悉 mySQL 中的 else 是否是正确的格式,我已经看到了有关存储过程的一些内容。
如有任何帮助,我们将不胜感激。
最佳答案
我不太清楚你的逻辑;但似乎您希望它采用存储过程格式。
CREATE PROCEDURE 'sp_Med' (IN 'in_vetPractice' VARCHAR(35))
LANGUAGE SQL
NOT DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
BEGIN
DECLARE ckExists int;
SET ckExists = 0;
SELECT count(*) INTO ckExists from vet WHERE vetPractice = in_vetPractice;
IF (ckExists > 0) THEN
UPDATE medical SET vetID = (Select max(vetID) FROM vet WHERE vetPractice = in_vetPractice)
ELSE
INSERT INTO vet VALUES (NULL, "newVetPractice", "NewAddress", "newContactNumber", "NewEmergencyNumber");
UPDATE medical SET vetID = LAST_INSERT_ID();
END IF;
END;
像这样执行
CALL sp_Med('newPractice')
关于MySql if else语句,if在该位置无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31431358/