我使用的数据库是SQL Server 2005。
我为一张表的插入操作添加了一个触发器。当我在C#程序中向表里插入数据时,如果触发器执行过程中出错,如何获取错误信息?如果触发器执行出错,那么所要插入的数据是否会保存到数据库中、还是插入失败?如果将整个插入过程作为一个事务来执行,
那么回滚事务时,触发器所进行的操作是否也能回滚?谁能帮忙回答一下,不甚感激!
我为一张表的插入操作添加了一个触发器。当我在C#程序中向表里插入数据时,如果触发器执行过程中出错,如何获取错误信息?如果触发器执行出错,那么所要插入的数据是否会保存到数据库中、还是插入失败?如果将整个插入过程作为一个事务来执行,
那么回滚事务时,触发器所进行的操作是否也能回滚?谁能帮忙回答一下,不甚感激!
(1)如果外部事务撤销,触发器形成的变更是否会撤销?会
如果触发器操作失败,是否会导致外部SQL失败,从而导致事务撤销会
(1) 事务回滚时,触发器形成的变更是否会撤销;是
(2) 触发器失败时,外部SQL是否会返回错误;会
如果会,则研究如何不返回错,触发器内部进行错误捕获并处理
如果不会,则研究如何会返回错误;
(3) 触发器失败时(插入两条记录,前者成功,后者失败),事务回滚时触发器形成的变更是否会撤销;是
(4) 触发器失败时(插入两条记录,前者成功,后者失败),事务提交时触发器形成的变更是否会撤销;要看你所谓的插入两条记录是分两个语句插入的,还是一个语句插入的. 如果是两个单独的语句插入的, 那么提交时触发器形成的变更不会被撤销; 如果是一个语句插入, 那么你的触发器通是FOR EACH ROW行级触发器,这时在语句返回时因为第二条数据失败, Oracle就会立即撤销前面一条引起的变更, 那么提交时该变更已经不存在了