我希望在MariaDB 5.5.68中创建一个触发器。
基于这个官方示例,我构建了这个查询:
query = ("""
DELIMITER //
create trigger set_uuid_query
before insert on DLMNT.QUERY for each row
begin
if new.id is null then
set new.id = uuid() ;
end if ;
end//
DELIMITER ;
""")
cursor = mydb.cursor()
cursor.execute(query)
for e in cursor:
print(e)
然而,虽然这在MariaDB 5.5.64中通过MySQL Workbench运行良好,但会抛出:
1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'DELIMITER //
create trigger set_uuid_query
before insert on DLMNT.QUERY for each' at line 1
恐怕这是不可能的。虽然它是关于MySQL的,但X1 E0 F1 X声明,定界器是客户端的东西。
此外,根据this doc的最后一行,我认为“\G”可以用作分隔符,但this answer声明了完全不同的内容(当我尝试使用它时,无论如何它都会抛出完全相同的错误)。
那么,使用这个Python库,我怎样才能进行这样的查询呢?
PS:我正在使用的lib是:mysql-连接器-Python 8.0.27
1条答案
按热度按时间k75qkfdt1#
当使用python(或任何其他)连接器时,您不需要使用DELIMITER来创建触发器。DELIMITER是 * 命令行客户端 * 的特殊技巧。命令行客户端希望知道何时向服务器发送潜在的多行输入查询。通常它可以依赖于字符串末尾的分号,但在“复杂”语句(如触发器和存储过程)的情况下就不行了。