通过向kafka发布一条消息来更新mysql中的多个字段

szqfcxe2  于 2021-06-15  发布在  Mysql
关注(0)|答案(1)|浏览(399)

我需要通过kafka connect更新mysql'table1'中最近10天记录的停用状态。由于mysql提供在单个查询中执行select和update,如何实现将一条记录发布到kafka主题。

bakd9h0s

bakd9h0s1#

演示示例。

-- create stored procedure (once)

CREATE PROCEDURE execute_many_queries (queries_text TEXT)
BEGIN
REPEAT
    SET @sql := SUBSTRING_INDEX(queries_text, ';', 1);
    SET queries_text := TRIM(LEADING ';' FROM TRIM(LEADING @sql FROM queries_text));
    PREPARE stmt FROM @sql;
    EXECUTE stmt;
    DROP PREPARE stmt;
UNTIL queries_text = '' END REPEAT;
END
-- create testing table

CREATE TABLE test (id INT, val INT);
-- execute 3 queries by 1 statement

CALL execute_many_queries ('INSERT INTO test VALUES (1,11), (2,22); UPDATE test SET val = 222 WHERE id = 2; SELECT * FROM test;');
id | val
-: | --:
 1 |  11
 2 | 222
-- execute more 2 queries by 1 statement

CALL execute_many_queries ('UPDATE test SET val = 111 WHERE id = 1; SELECT * FROM test;');
id | val
-: | --:
 1 | 111
 2 | 222

db<>在这里摆弄
小心使用!sp中没有检查-查询必须没有错误。注射是可能的。

相关问题