我有一个表foo
,其中有一个NOT NULL
带有默认值的列message
:
CREATE TABLE foo(
id int PRIMARY KEY,
message varchar(64) NOT NULL DEFAULT 'Hello'
)
有一个存储过程bar
插入到foo
:
CREATE PROCEDURE bar(
i_id int,
i_message varchar(64)
)
BEGIN
-- other logic
IF i_message IS NOT NULL THEN
INSERT INTO foo (id, message) VALUES (i_id, i_message);
ELSE
INSERT INTO foo (id, message) VALUES (i_id, DEFAULT);
-- could also be: INSERT INTO foo (id) VALUES (i_id);
END IF;
END;
您可以看到,我必须有条件地分支以便我的插入使用默认值(如果i_message
为null)。仅一列就可以了,但是请考虑是否foo
有更多NOT NULL DEFAULT
列-语法可能很笨拙。
我是否可以使用一种语法来指定插入值应该返回默认值(如果为null)?我尝试了以下操作,但可以理解的是语法错误:
INSERT INTO foo (id, message) VALUES (i_id, COALESCE(i_message, DEFAULT));
INSERT INTO foo (id, message) VALUES (i_id, IFNULL(i_message, DEFAULT));
INSERT INTO foo (id, message)
VALUES
(i_id, IFNULL(i_message,DEFAULT(message)));
所以我有了这个数据表 正如您所看到的,如果值为null,则获取前一个值,但是如果您查看第三行,我将获得一个null,我假设是因为它获取了第二行的值,但是当它仍然没有更新时(因此仍然是来自原始dataframe的null)。 我有点不知道该怎么做。有人帮忙吗?
问题内容: 我有以下映射 我如何配置我的Mapper或Mappings,以便当childId为null时,将目标Entity.child设置为null而不是Entity.child.id? 问题答案: 对于我来说,找到的不是一个非常优雅的解决方案,而是可行的解决方案。 首先将接口更改为抽象类,然后添加
我已经连接表与一个 新娘模型: 计划模型: 我有一个查询将这些数据返回到endpoint。 一切都很好,除了一件事。在婚宴桌上,一些身份证上没有计划。因此,当我返回数据时,一些带有一个空的数组。 我想阻止这种情况。如果没有计划,那么我不想返回该新娘id。在这里我如何才能实现我想要的?
默认情况下,MapStruct将NullValueMappingStrategy作为RETURN_NULL。我的要求是,当source为null时,我需要抛出一个NPE,类似于lombok的@nonnull的工作方式。
我想要两个表上的连接,如果值为NULL,则复制左连接行为,如果值为NOULL,则复制内连接行为。例如,对于表: 该联接将返回一行值(根据左联接)。对于表格: 不会返回任何行(根据内部联接)。对于表格: 将返回值为的单行(根据两种联接类型)。 最有效的方法是什么? 编辑:作为效率最大化的一部分,我正在寻找一个不进行后期筛选的查询(即使用子句)。
Hy, 我为数据库创建了以下3个表: ); 我有以下存储过程 C#代码: 但在我将数据插入使用上述代码的表单后,我得到了以下错误: 无法将值NULL插入列User_Id...... PLATFORM. MDF. dbo. Buyer;列不允许空值。INSERT失败。 无法将值NULL插入列Type_Id,表... PLATFORM. MDF. dbo. User;列不允许空值。INSERT失败。