创建一个DDL触发器,当在studentmis数据库中建立表时,会显示提示信息:有一个新表建立完成。创建一个表:chengji(xuehao char(10),chengji float),验证触发器的执行情况。
时间: 2024-12-13 16:26:17 浏览: 6
在MySQL中,创建DDL(Data Definition Language,数据定义语言)触发器可以在表创建等数据定义事件发生时执行自定义脚本。对于你的情况,我们可以使用`DELIMITER`和`CREATE TRIGGER`来创建这样一个触发器,然后验证其执行情况。首先,我们设置分隔符,然后创建触发器,最后恢复默认分隔符并创建表。以下是步骤:
1. 设置分隔符(假设当前默认的是';')
```sql
DELIMITER //
```
2. 创建触发器,当在`studentmis`数据库中新建表时显示提示信息
```sql
CREATE TRIGGER show_create_table
BEFORE CREATE TABLE FOR EACH ROW
BEGIN
DECLARE msg TEXT DEFAULT CONCAT('有一个新表 ',NEW.TABLE_NAME,' 创建完成.');
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT=msg;
END; //
```
3. 恢复默认分隔符
```sql
DELIMITER ;
```
4. 创建`chengji`表
```sql
CREATE TABLE chengji (
xuehao CHAR(10),
chengji FLOAT
);
```
5. 验证触发器是否正常工作
尝试创建一个新的表,如果触发器生效,应该能看到错误消息,内容是"有一个新表 [新表名] 创建完成.",其中"[新表名]"会被实际创建的表名替换。
注意,上述触发器使用了`SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT...`,这会让触发器停止执行,并显示自定义的消息,而非真的阻止表的创建。如果需要真正阻止表的创建,可以将`SIGNAL`换成`RAISE`。
阅读全文