审核触发器,将Blob插入为LongText

Du *_* D. 6 mysql sql triggers

我正在尝试创建一个审计触发器,将blob数据作为longtext数据类型插入.

当我使用select时,我会看到图像的内容,但是当我使用相同的格式插入时,它会显示为空白.

Works:数据显示图像的原始内容

select cast(my_image as char) as data from MyTable
Run Code Online (Sandbox Code Playgroud)

不起作用:数据列显示为空白(0byte)

insert into MyAuditTable (data) values ( cast(NEW.my_image as char) )
Run Code Online (Sandbox Code Playgroud)

更新:9月12日 我试图通过一个函数希望通过显式指定类型然后它将采取,但没有运气那里

CREATE FUNCTION `BLOB2TXT`(dablob LONGBLOB) RETURNS LONGTEXT 
    NO SQL
    DETERMINISTIC
BEGIN
       RETURN CAST(dablob AS CHAR CHARACTER SET utf8); 
END
Run Code Online (Sandbox Code Playgroud)

我在github上发布我的项目,如果有人想看看或想要使用我拥有的.随时欢迎你 :)

https://github.com/hotmit/mysql-sp-audit

现在唯一给我一些希望的是Hex(blob),但是当我UNHEX()时,数据是不可读的.

Joë*_*min 1

您可以尝试以下操作:

INSERT INTO zaudit_meta(audit_id, col_name)
SELECT 0
    ,CAST(my_image AS CHAR)
Run Code Online (Sandbox Code Playgroud)

如果您的SELECT查询工作正常,则此解决方案应该有效。

希望这会有所帮助。