mysql - 如果行不存在则插入的过程或函数
问题描述
我正在尝试编写一个函数或过程来检查行是否存在并返回行ID;否则它会创建一行并返回该行 ID。这是我所拥有的:
DELIMITER //
DROP FUNCTION IF EXISTS `is_school`//
CREATE FUNCTION is_school (school_name VARCHAR(255))
RETURNS INT unsigned
MODIFIES SQL DATA
BEGIN
DECLARE school_id INT unsigned;
SELECT `id` INTO school_id FROM `schools` WHERE `name`=school_name LIMIT 1;
IF school_id = NULL THEN
INSERT INTO `schools` (`name`) VALUES (school_name);
RETURN LAST_INSERT_ID();
ELSE
RETURN school_id;
END IF;
END //
DELIMITER ;
如果该行存在,它工作正常。但它似乎不想执行那个插入语句。如果您尝试在新学校上调用该函数,它不会创建该学校。我也试过用 OUT 参数把它写成一个过程。关于我要去哪里错的任何想法?
解决方案
推荐阅读
- python - 如何检查字符串是否包含字符串的完全匹配?
- node.js - 赛普拉斯 cy.wait 不适用于 AWS CodeBuild
- sql - 用于将行转换为列的 SQL 选择查询
- javascript - 将html表格中的单元格从简单文本更改为超链接
- html - 试图垂直翻转
在一个里面 - javascript - 我被困在创建一个新的 Leaflet 自定义控件
- c# - 反序列化字符串数组以列出 C#
- flutter - 如果我将文件放在 getApplicationDocumentsDirectory() 目录中,文件将存储在哪里?它会增加应用程序的大小吗?
- spring - Mongo 聚合查询到等效的 Spring Mongo 数据
- asp.net - 在 ASP.NET MVC 中获取经过身份验证的身份用户数据