【发布时间】:2015-06-30 18:07:36
【问题描述】:
这是我在数据库中的某个表中插入后执行的查询。在这里,我得到 rate_like_id 和所有其他字段,我也保存它们,但是当我使用 CONCAT 并尝试将它们保存为 json 时,它会通过触发器插入 NULL 值。
这是一种错误的做法吗?有没有其他方法可以通过触发器 mysql 保存这种类型的数据。
INSERT INTO `log_activity`(`visitor_id`,
`rating_like_id`,
`type`,
`response`,
`created_by`,
`created_date`)
VALUES (new.created_by,
new.rating_like_id,
CASE WHEN new.is_like = NULL THEN "Rating" ELSE "Like" END ,
-- Here is this column Should not be null but it is coming null when INSERTED
CONCAT(
'{"card_id":','"',new.card_id,'"',
',"card_type":','"',new.card_type,'"',
',"user_id":','"',new.user_id,'"',
',"is_like":','"',new.is_like,'"',
',"has_rated":','"',new.has_rated,'"',
',"rate":','"',new.rate,'"',
',"created_by":','"',new.created_by,'"',
',"created_date":','"',new.created_date,'"',
',"card_type":','"',new.card_type,'"','}'),
new.created_by,
new.created_date)
这有什么问题..所有其他字段都正确保存,只有 CONCAT 字段没有正确插入。
是的,我可以像这样插入值
CONCAT(" hi "," how "," are "," you ", " ? ")
这个问题是因为我在 CONCAT 中使用“new.fieldName”...我看到THIS 的问题他们在做同样的事情..当然它比我的复杂。
【问题讨论】:
-
您正在数据库中即时构建 json?那只是……疯了……记住 sql
null具有传染性。如果您要连接的 ANY 字段本身为空,则整个结果将变为空。 -
如果您要连接的任何字段本身都是空的...@MarcB 让我看看...可能这应该是问题....
-
是的构建 json...因为无法创建所有字段...因为在此表中...超过 10 个表的数据将被保存用于记录...@MarcB ...我知道它很尴尬......但这是一个要求......
-
好吧,那么至少为每个
new.whatever尝试IFNULL(x, ''),以便在它们为空时将它们转换为空字符串。 -
@MarcB 是的,谢谢