不知这种情况大家有没有想过呢?(我现在提问是越来越没信心了!)(100分)

  • 主题发起人 主题发起人 瑞雪
  • 开始时间 开始时间

瑞雪

Unregistered / Unconfirmed
GUEST, unregistred user!
就是表中虽有了Instead Of 触发器,但是在你插入时还是要检查你将插入的值是否
与表结构相符,如何让它不检查呢?

比如说我有一个aTab表,有、两个字断(ID Int Primary Key,Name Varchar NOT NULL)
并建立了一个触发器:
CREATE TRIGGER [dbo].[test]on aTab
INSTEAD OF INSERT
AS BEGIN

DECLARE @Test INT
DECLARE @Name VARCHAR

SELECT @Test = MAX(ID)+1 FROM aTab
SELECT @Name = Name FROM INSERTED

INSERT INTO aTab(ID,NAME)
VALUE (@Test,@Name)

END

已实现ID自动增量(我不是问如何自动增量)
于是我执行如下语句:

INSERT INTO aTab(Name)
VALUE('MyName')

系统便提示“无法将NULL值插入列ID,此列不能为空”

我想这条语句能够通过,并执行触发器中的内容,有没有办法呢?
 
你的TRIGGER是多余的,把它删掉!
 
最好少用触发器。我有个程序用了很多触发器,现在维护起来麻烦透顶。
 
系统会自动检查与表结构是否相府
无法用INSTEAD OF 触发器替换掉的,好像是没有办法的吧
 
我也遇到了类似的问题,不知道你用的是那个版本的数据库,前台程序是如何做的,请说详细一点,
或许我能帮你。
 
错了,你你的触发器在你添加记录的时候触发,添加了一个“好”的记录,但是,之后,要添加你添加的记录,由于没有主建,所以出错,按你的思路,把触发器里的insert 语句,改成update语句,应该可以,就是修改inserted记录
 
请遵守 Primary Key 的规则
 
用触发器还不如用存储过程呢!
 
后退
顶部