MySQL 9.0 发行说明
当各种 CREATE ... IF NOT EXISTS
语句被复制时,MySQL 应用以下规则
每个
CREATE DATABASE IF NOT EXISTS
语句都会被复制,无论数据库是否已存在于源上。类似地,每个没有
SELECT
的CREATE TABLE IF NOT EXISTS
语句都会被复制,无论表是否已存在于源上。这包括CREATE TABLE IF NOT EXISTS ... LIKE
。CREATE TABLE IF NOT EXISTS ... SELECT
的复制遵循稍微不同的规则;有关更多信息,请参见 第 19.5.1.7 节,“CREATE TABLE ... SELECT 语句的复制”。CREATE EVENT IF NOT EXISTS
始终被复制,无论语句中命名的事件是否存在于源上。CREATE USER
仅在成功时才会写入二进制日志。如果语句包含IF NOT EXISTS
,则它被认为是成功的,并且只要在语句中命名的至少一个用户被创建,就会被记录;在这种情况下,该语句按原样记录;这包括对未创建的现有用户的引用。有关更多信息,请参见 CREATE USER 二进制日志记录。CREATE PROCEDURE IF NOT EXISTS
、CREATE FUNCTION IF NOT EXISTS
或CREATE TRIGGER IF NOT EXISTS
,如果成功,将完整地写入二进制日志(包括IF NOT EXISTS
子句),无论语句是否因对象(过程、函数或触发器)已存在而引发警告。