是否有可能使用单个查询删除多个事件?我知道,我们可以使用show events获取事件列表,并删除带有名称的单个事件。
在mysql 5.7或最低版本中,这是可能的,但我使用的是mysql 8.0。
答案 0 :(得分:0)
我建议使用MySQL Shell-一次关闭即可使用(使用Python模式):
mysqlsh> \py
mysql-py> i_s = session.get_schema("information_schema")
mysql-py> events = i_s.EVENTS \
-> .select("sys.quote_identifier(EVENT_SCHEMA) AS EventSchema", "sys.quote_identifier(EVENT_NAME) AS EventName") \
-> .where("EVENT_SCHEMA = 'db1'").execute().fetch_all();
mysql-py> events
[
[
"`db1`",
"`event1`"
],
[
"`db1`",
"`event2`"
],
[
"`db1`",
"`event``3`"
]
]
mysql-py> sql_fmt = "DROP EVENT {0}.{1}"
mysql-py> for event in events:
-> print(sql_fmt.format(*event))
-> session.sql(sql_fmt.format(*event)).execute()
->
DROP EVENT `db1`.`event1`
DROP EVENT `db1`.`event2`
DROP EVENT `db1`.`event``3`
Query OK, 0 rows affected (0.0038 sec)
有关更全面的解释和创建更通用的实用程序的示例,另请参见https://mysql.wisborg.dk/2018/12/02/mysql-8-drop-several-stored-events-procedures-or-functions/。