我已经看过关于此处的其他问题。它不工作。MySQL程序检查插入之前是否存在记录
DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `environment_admin`(
IN environment_id TEXT,
IN user_id TEXT,
IN username VARCHAR(75),
IN password VARCHAR(512)
)
BEGIN
DECLARE env_id INT;
DECLARE admin_id INT;
SET env_id = CAST(environment_id AS SIGNED INT);
SET admin_id = CAST(user_id AS SIGNED INT);
IF NOT EXISTS(SELECT 1 FROM `environment`.`environment_accounts` WHERE environment_id = env_id AND user_id = admin_id) THEN
BEGIN
INSERT INTO
`environment`.`environment_accounts`
(
`environment_id`,
`user_id`,
`username`,
`password`,
`is_active`,
`is_admin`,
`is_mod`
)
VALUES
(
env_id,
admin_id,
username,
password,
1,
1,
1
);
END;
END IF;
END
所以,如果我运行:
CALL `environment`.`environment_admin`('22','1','kacieh','512c9ad228332bbd30d09ce7ffb8896e00a1610e914a5fa180bf15ce702b90423e6a9540579f672315ae3c6cb1b8d06ee2b784b4761e806675aa88c2a915553e');
我得到0行(S)影响 果然,什么都没有发生。 -_-我一直在这个小时工作 我测试了条件查询,它的工作原理。 我已经测试过存储过程中的insert语句,它也可以。
但可以有许多相同的environment_id和许多user_id它是一个多对多的关系。虽然不会有相同的environment_id user_id组合。我没有让这对PK,但因为我有其他需要这些记录有一个独特的ID – KacieHouser
这应该工作,如果我有一个独特的索引上的两个字段的组合。我将不得不看看我是否有这个或者在那里。给我几个 – KacieHouser
CREATE UNIQUE INDEX IX_environment_id_user ON环境(environment_id,user_id); – Parallelis