#### 17.5.1.6 复制 CREATE ... IF NOT EXISTS 语句

[](<>)[](<>)

MySQL 在各种情况下应用这些规则`创建...如果不存在`语句被复制：

-   每一个[`如果不存在则创建数据库`](create-database.html)语句被复制，无论数据库是否已经存在于源上。

-   同样，每[`如果不存在则创建表`](create-table.html)没有的声明[`选择`](select.html)被复制，无论表是否已经存在于源上。这包括[`如果不存在则创建表...喜欢`](create-table-like.html).复制[`如果不存在则创建表...选择`](create-table-select.html)遵循一些不同的规则；看[第 17.5.1.7 节，“CREATE TABLE ... SELECT 语句的复制”](replication-features-create-select.html)， 了解更多信息。

-   [`如果不存在则创建事件`](create-event.html)始终被复制，无论语句中指定的事件是否已存在于源中。

-   [`创建用户`](create-user.html)仅在成功时才写入二进制日志。如果语句包括`如果不存在`，它被认为是成功的，并且只要至少创建了一个在语句中命名的用户就会被记录；在这种情况下，该声明被记录为书面；这包括对未创建的现有用户的引用。看[CREATE USER 二进制日志](create-user.html#create-user-binary-logging)， 了解更多信息。

-   (*MySQL 8.0.29 及更高版本*:)[`如果不存在则创建过程`](create-procedure.html),[`如果不存在则创建函数`](create-function.html)， 要么[`如果不存在则创建触发器`](create-trigger.html)，如果成功，则将其全部写入二进制日志（包括`如果不存在`子句），语句是否因为对象（过程、函数或触发器）已经存在而引发警告。
