好的,我目前正在开发一个应该有可搜索的池泵数据库的网站。作为该系统的一部分,为了防止人们读取隐藏数据,我随机生成了池泵库存的主键。这是我为MariaDB后端编写的代码:
DELIMITER $$
CREATE TRIGGER random_pump_id BEFORE INSERT ON tbl_stock FOR EACH ROW
BEGIN
DECLARE temp_id MEDIUMINT;
REPEAT
SET temp_id = FLOOR(RAND() * 16777216);
UNTIL (SELECT COUNT(*) FROM tbl_stock WHERE pump_id = temp_id) <= 0 END REPEAT;
SET NEW.pump_id = temp_id;
END
$$
但现在我陷入了两难境地。每次我想插入一行时,我都需要一种方法来检索刚刚生成的主键。我知道如果我使用AUTO_INCREMENT,我可以在PDO中使用LAST_INSERT_ID函数或lastInsertId。但由于我没有使用AUTO_INCREMENT,而是使用单独的触发器,这些函数只会返回0.我知道我可以通过使用RETURNING子句在PostgreSQL中完成它,但我找不到一种方法来实现这一点。 MariaDB的。
有谁知道任何解决方案?也许是一些我不知道的模糊触发器?请?
答案 0 :(得分:0)
据推测,您还有其他方法可以找到记录吗?可能通过UNIQUE
密钥?如果是这样,则在添加随机ID后获取该行。
不要使用触发器,而是编写应用程序代码。 (触发器无法解决所有问题。)