1、定义表TAB,并在其上定义触发器TRI,在对TAB的插入和更新前检查,如果插入或更新的值在100-1000之间的话,将值置为50;如果值大于1000的话,则给出新值不允许大于1000的提示。 (1)向表TAB插入数据(150)。 (2)对表中的数据进行更新,将20更新为1500,是否能正常执行,系统会出现什么情况? 2、删除触发器TRI
时间: 2023-12-18 11:02:34 浏览: 37
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;
```
(1) 向表TAB插入数据(150):
```
INSERT INTO TAB VALUES (1, 150);
```
触发器TRI会将插入的值修改为50,插入成功。
(2) 对表中的数据进行更新,将20更新为1500,是否能正常执行,系统会出现什么情况?
```
UPDATE TAB SET value = 1500 WHERE id = 1;
```
触发器TRI会检测到新值大于1000,抛出异常并终止更新操作,系统会提示"New value cannot be greater than 1000"。
2、删除触发器TRI的SQL语句如下:
```
DROP TRIGGER IF EXISTS TRI;
```