1、定义表TAB,并在其上定义触发器TRI,在对TAB的插入和更新前检查,如果插入或更新的值在100-1000之间的话,将值置为50;如果值大于1000的话,则给出新值不允许大于1000的提示。 (1)向表TAB插入数据(150)。 (2)对表中的数据进行更新,将20更新为1500,是否能正常执行,系统会出现什么情况? 2、删除触发器TRI
时间: 2024-02-25 12:52:54 浏览: 171
1. 创建表TAB并定义触发器TRI:
```sql
CREATE TABLE TAB (
ID INT PRIMARY KEY,
VALUE INT
);
CREATE TRIGGER TRI
BEFORE INSERT OR UPDATE ON TAB
FOR EACH ROW
BEGIN
IF NEW.VALUE BETWEEN 100 AND 1000 THEN
SET NEW.VALUE = 50;
ELSEIF NEW.VALUE > 1000 THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'New value cannot be greater than 1000';
END IF;
END;
```
2. 向表中插入数据并更新数据:
```sql
-- 插入数据(150)
INSERT INTO TAB (ID, VALUE) VALUES (1, 150);
-- 更新数据(20 -> 1500)
UPDATE TAB SET VALUE = 1500 WHERE ID = 1;
```
执行插入操作时,触发器会检查插入的值是否在100-1000之间,由于插入的值为150,满足条件,触发器会将值置为50。
执行更新操作时,触发器会检查更新的值是否大于1000,由于更新的值为1500,不满足条件,触发器会抛出异常,提示新值不能大于1000。更新操作会失败,数据不会被修改。
3. 删除触发器TRI:
```sql
DROP TRIGGER TRI;
```
阅读全文