mysql 中的not preserve是什么意思
时间: 2024-06-01 08:08:34 浏览: 149
在 MySQL 中,"NOT PRESERVE" 是一个选项,用于指定在执行 ALTER TABLE 操作时是否保留原始表的数据和索引。如果使用 "NOT PRESERVE" 选项,则 ALTER TABLE 操作将删除原始表的数据和索引,并创建一个新的空表,然后将数据从原始表复制到新表。这个选项通常用于优化表的结构和性能,并且可以减少表的碎片和空间占用。但是,使用 "NOT PRESERVE" 选项时要小心,因为它会删除原始表的数据和索引,可能会导致数据丢失。所以在使用 "NOT PRESERVE" 选项时,建议在执行操作前备份数据。
相关问题
mysql5.7定时执行sql脚本
MySQL 5.7可以使用事件(Event)来实现定时执行SQL脚本的功能。事件是MySQL中的一种特殊对象,可以在指定的时间间隔内自动执行一系列SQL语句。
要使用事件功能,首先需要确保MySQL服务器已启用事件调度器。可以通过在MySQL配置文件中添加以下行来启用事件调度器:
```
event_scheduler=ON
```
然后,可以使用以下语法创建一个事件:
```sql
CREATE EVENT event_name
ON SCHEDULE schedule
[ON COMPLETION [NOT] PRESERVE]
DO
event_body;
```
其中,event_name是事件的名称,schedule是事件的调度规则,event_body是事件要执行的SQL语句。
调度规则可以使用以下几种方式之一:
- 每隔固定时间执行一次:
```sql
EVERY interval
```
其中,interval可以是一个时间段,例如1 HOUR、1 DAY等。
- 在指定的时间执行一次:
```sql
AT timestamp
```
其中,timestamp是一个具体的日期和时间,例如'2022-01-01 00:00:00'。
- 在指定的时间段内重复执行:
```sql
EVERY interval STARTS timestamp ENDS timestamp
```
其中,interval是一个时间段,timestamp是开始和结束的日期和时间。
以下是一个创建事件的示例:
```sql
CREATE EVENT my_event
ON SCHEDULE EVERY 1 DAY
DO
BEGIN
-- 执行SQL语句
INSERT INTO my_table (column1, column2) VALUES ('value1', 'value2');
END
```
这个事件将在每天执行一次,向my_table表中插入一条记录。
注意,创建事件需要具有适当的权限。如果没有足够的权限,可以联系MySQL管理员进行授权。
mysql事件怎么设置定时命令
MySQL的事件(Event Scheduler)是一种强大的工具,可以让你安排在特定时间点或满足特定条件后运行SQL脚本。以下是设置MySQL事件的基本步骤:
1. **创建事件**:
使用`CREATE EVENT`语句创建一个新事件。例如,你可以创建一个每小时执行一次备份的事件:
```sql
CREATE EVENT my_backup_event
ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 HOUR
DO
START TRANSACTION;
... -- 这里放置你要执行的备份SQL语句
COMMIT;
```
`ON SCHEDULE`部分定义了触发事件的时间规则。
2. **事件触发条件**:
可以指定如`AT CURRENT_TIMESTAMP`, `AT TIMESTAMP 'YYYY-MM-DD HH:MM:SS'`, 或者周期性的规则,如`ON COMPLETION NOT PRESERVE`.
3. **事件体**:
`DO`后面的`...`部分是你希望在指定时间执行的具体SQL命令或存储过程。
4. **启用事件服务**:
确保事件服务已经启用,如果未开启,可以使用`START`命令启动它:
```sql
START.event_scheduler;
```
5. **管理事件**:
要查看已有的事件,可以用`SHOW EVENTS;`,删除事件则使用`DROP EVENT`。
阅读全文