在MySQL中创建一行函数
我创建了以下函数:在MySQL中创建一行函数,mysql,stored-functions,Mysql,Stored Functions,我创建了以下函数: CREATE FUNCTION `push_admin`(`p_messenger` text, `p_admin_id` int(20), `p_client_id` int(20)) RETURNS INTEGER BEGIN INSERT INTO messenger(admin_id, client_id, messenger) VALUES (p_admin_id, p_client_id, p_messenger); INSERT
CREATE FUNCTION `push_admin`(`p_messenger` text, `p_admin_id` int(20), `p_client_id` int(20))
RETURNS INTEGER
BEGIN
INSERT INTO messenger(admin_id, client_id, messenger)
VALUES (p_admin_id, p_client_id, p_messenger);
INSERT INTO messenger(ref_id)
SELECT id FROM messenger WHERE client_id = p_client_id;
RETURN LAST_INSERT_ID();
END$$
如何将
admin\u id
、client\u id
、messenger
、ref\u id
放在一行中?在phpmyadmin中添加此函数的例程下,您将找到一个添加参数的选项。见下图-
这个选项适合你吗
INSERT INTO messenger(admin_id, client_id, messenger, ref_id)
VALUES (p_admin_id, p_client_id, p_messenger, (SELECT id FROM messenger WHERE client_id = p_client_id));
图中有两行。我想要管理员id、客户端id、messenger、参考id在一行中。Tks.替换
在第二次查询中插入替换
CREATE FUNCTION `push_admin`(`p_messenger` text, `p_admin_id` int(20), `p_client_id` int(20))
RETURNS INTEGER
BEGIN
INSERT INTO messenger(admin_id, client_id, messenger)
VALUES (p_admin_id, p_client_id, p_messenger);
REPLACE INTO messenger(ref_id)
SELECT id FROM messenger WHERE client_id = p_client_id;
RETURN LAST_INSERT_ID();
END$$
这对你有帮助吗
REPLACE的工作原理与INSERT完全相同,只是如果表中的一个旧行与主键或唯一索引的新行具有相同的值,则在插入新行之前会删除旧行
事实上,他想要的是:
CREATE FUNCTION `push_client`(`p_email` text, `p_messenger` text, `p_phone` text, `p_domain` text, `p_ip` text, `p_browser` text, `p_admin_id` int(20), `p_client_id` int(20))
RETURNS INTEGER
BEGIN
SET @id = 0;
SELECT id INTO @id FROM messenger WHERE client_id = p_client_id AND admin_id = p_admin_id;
INSERT INTO client(ref_id, email, phone, ip, browser)
VALUES(@id, p_email, p_phone, p_ip, p_browser);
UPDATE client SET domain_id = (SELECT id FROM domain WHERE name = p_domain);
INSERT INTO messenger(client_id)
SELECT id FROM client WHERE id = p_client_id;
UPDATE messenger
SET admin_id = p_admin_id, browser = p_browser, messenger = p_messenger
WHERE client_id = p_client_id;
RETURN LAST_INSERT_ID();
END$$
你所说的给予是什么意思?您是在问如何在mysql中调用用户定义的函数吗?与调用任何预定义函数的方式相同。ID字段是否自动递增?能否帮助我Dennis:)messenger表中的ID是否自动递增编辑不太可能执行此请求。您可以触发表插入,并在此处记录感叹词后在此处获取id
的值。然后,更改ref\u id
的值。抱歉,我只能使用存储函数:(