CREATE TABLE TAB(COL INT); INSERT INTO TAB VALUES(10); INSERT INTO TAB VALUES(20); CREATE TRIGGER TRI BEFORE UPDATE OR INSERT ON TAB FOR EACH ROW AS BEGIN IF (NEW.COL>100)AND(NEW.COL<1000) THEN NEW.COL=50; END IF; IF (NEW.COL>1000) THEN RAISE EXCEPTION 'New values can not more than 1000'; END IF; END;
时间: 2024-01-04 09:02:14 浏览: 29
这段代码是一个 SQL 的语句,它创建了一个名为 TAB 的表,该表只有一个整型列 COL。接下来,向该表插入两行数据,分别是 10 和 20。然后,创建了一个名为 TRI 的触发器,该触发器会在每次对 TAB 表进行更新或插入操作时被触发。当触发器被触发时,会先检查新插入或更新的值是否大于 100 但小于 1000,如果是,则将其修改为 50。接着,如果新值大于 1000,则会抛出一个异常,提示新值不能大于 1000。
相关问题
create trigger tri_idcheck before insert on table_ticket for each row begin IF LENGTH(NEW.passenger_id)< 18 THEN SET NEW.passenger_id= 'error' ; END IF; end ;改写成sql server语言
在 SQL Server 中,可以使用类似以下的语法来创建一个与 MySQL 中所述功能相同的触发器:
```
CREATE TRIGGER tri_idcheck
ON table_ticket
BEFORE INSERT
AS
BEGIN
IF LEN(INSERTED.passenger_id) < 18
BEGIN
SET INSERTED.passenger_id = 'error';
END
END;
```
需要注意的是,SQL Server 中使用 `INSERTED` 关键字代替 MySQL 中的 `NEW` 来引用要插入的新行数据。此外,`LENGTH` 函数在 SQL Server 中被替换为 `LEN` 函数。
CREATE TRIGGER tri_Insert_S ON S After INSERT,UPDATE AS IF EXISTS (SELECT * FROM INSERTED WHERE isnull(Sage,18)>18 and <=25) begin print '不是18-25期间 加入失败' rollback end
这个触发器的作用是在S表中插入或更新数据后,如果插入的年龄不在18到25岁之间,则会回滚操作并打印"不是18-25期间 加入失败"。
其中,INSERTED是SQL Server中的一个特殊表,它存储了刚刚插入或更新的数据,可以在触发器中使用。isnull(Sage,18)表示如果Sage为空,则将其默认值设置为18。而<=25则是一个语法错误,应该是写成Sage<=25。最终的代码如下:
```
CREATE TRIGGER tri_Insert_S ON S AFTER INSERT, UPDATE
AS
BEGIN
IF EXISTS (SELECT * FROM INSERTED WHERE Sage IS NULL OR Sage < 18 OR Sage > 25)
BEGIN
PRINT '不是18-25期间 加入失败'
ROLLBACK
END
END
```
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![gz](https://img-home.csdnimg.cn/images/20210720083447.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)