CREATE TRIGGER tri_idcheckON table_ticketBEFORE INSERTASBEGIN IF LEN(INSERTED.passenger_id) < 18 BEGIN SET INSERTED.passenger_id = 'error'; ENDEND;报错'BEFORE' 不是可以识别的 触发器。请修改使得sql server能运行
时间: 2024-02-16 15:00:23 浏览: 108
SQL_Server-trigger.rar_trigger_创建触发器
根据 SQL Server 的语法,应该将关键字 `ON` 放在触发器名字和表名之间,并且在 `BEFORE INSERT` 之前添加 `FOR`,同时在触发器体的开头使用 `SET NOCOUNT ON`,以避免返回不必要的计数信息。因此,正确的代码应该是:
```
CREATE TRIGGER tri_idcheck
ON table_ticket
FOR INSERT
AS
BEGIN
SET NOCOUNT ON;
IF LEN((SELECT passenger_id FROM INSERTED)) < 18
BEGIN
RAISERROR('Error: passenger_id too short!', 16, 1);
ROLLBACK TRANSACTION;
END
END;
```
这个触发器会在插入数据到 `table_ticket` 表之前执行,并检查插入的数据中 `passenger_id` 字段的长度是否小于 18。如果是,则触发器会抛出一个错误,并且自动回滚事务,以防止数据插入到表中。注意,在触发器体中使用 `SELECT` 语句来访问插入的数据,而不是直接使用 `INSERTED` 表。
阅读全文