题目
以下哪些是关于MySQL触发器[1]中NEW和OLD关键字的正确描述 A. OLD关键字用于引用被更新或删除之前的行数据。sqrt B. 在DELETE触发器中,只能使用OLD关键字。C. 在INSERT触发器中,只能使用NEW关键字。sqrt D. NEW关键字用于引用新插入或更新的行数据。
以下哪些是关于MySQL触发器[1]中NEW和OLD关键字的正确描述
- A. $$ OLD关键字用于引用被更新或删除之前的行数据。\sqrt $$
- B. 在DELETE触发器中,只能使用OLD关键字。
- C. $$ 在INSERT触发器中,只能使用NEW关键字。\sqrt $$
- D. NEW关键字用于引用新插入或更新的行数据。
题目解答
答案
ABCD
解析
本题考查MySQL触发器中NEW和OLD关键字的使用场景。解题核心在于理解:
- OLD关键字用于引用触发器执行前的原数据(仅在DELETE和UPDATE触发器中可用);
- NEW关键字用于引用触发器执行后的数据(仅在INSERT和UPDATE触发器中可用);
- DELETE触发器只能使用OLD(因删除后无新数据);
- INSERT触发器只能使用NEW(因插入前无旧数据)。
选项A
OLD关键字用于引用被更新或删除之前的行数据
- 正确。在UPDATE或DELETE操作前,OLD保存原数据。例如:
CREATE TRIGGER trg_delete BEFORE DELETE ON table FOR EACH ROW BEGIN INSERT INTO log VALUES (OLD.id); END;
选项B
在DELETE触发器中,只能使用OLD关键字
- 正确。删除操作无新数据,因此只能通过OLD访问原数据。
选项C
在INSERT触发器中,只能使用NEW关键字
- 正确。插入操作无旧数据,因此只能通过NEW访问新插入的数据。
选项D
NEW关键字用于引用新插入或更新的行数据
- 正确。在INSERT或UPDATE操作后,NEW保存新数据。例如:
CREATE TRIGGER trg_update AFTER UPDATE ON table FOR EACH ROW BEGIN INSERT INTO log VALUES (NEW.id); END;