数据库中的触发器问题!急啊

xyjlcp 2003-09-28 04:38:10
小弟刚学sql与asp.碰到了一些问题.如下:
我想在做一个课件,如powerpoint!演示一样,但现在我想用数据库做!
我想在后台做知识点的插入和删除.
怎样用sql触发器做插入和删除!急啊!
...全文
257 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
killxtt 2003-09-28
  • 打赏
  • 举报
回复
去看看sql在线丛书吧,查create trigger,仔细看看,我觉得你还不是很明白触发器是用来干什么的,并不是总要用到触发器的。如果要用的话,代码道不是很难写
lxf31 2003-09-28
  • 打赏
  • 举报
回复
创建触发器前应考虑下列问题:

CREATE TRIGGER 语句必须是批处理中的第一个语句。将该批处理中随后的其它所有语句解释为 CREATE TRIGGER 语句定义的一部分。


创建触发器的权限默认分配给表的所有者,且不能将该权限转给其他用户。


触发器为数据库对象,其名称必须遵循标识符的命名规则。


虽然触发器可以引用当前数据库以外的对象,但只能在当前数据库中创建触发器。


虽然不能在临时表或系统表上创建触发器,但是触发器可以引用临时表。不应引用系统表,而应使用信息架构视图。有关更多信息,请参见信息架构视图。


在含有用 DELETE 或 UPDATE 操作定义的外键的表中,不能定义 INSTEAD OF 和 INSTEAD OF UPDATE 触发器。


虽然 TRUNCATE TABLE 语句类似于没有 WHERE 子句(用于删除行)的 DELETE 语句,但它并不会引发 DELETE 触发器,因为 TRUNCATE TABLE 语句没有记录。


WRITETEXT 语句不会引发 INSERT 或 UPDATE 触发器。
创建触发器时需指定:

名称。


在其上定义触发器的表。


触发器将何时激发。


激活触发器的数据修改语句。有效选项为 INSERT、UPDATE 或 DELETE。多个数据修改语句可激活同一个触发器。例如,触发器可由 INSERT 或 UPDATE 语句激活。


执行触发操作的编程语句。
多个触发器
一个表中可有同类型的多个 AFTER 触发器,前提条件是它们的名称各不相同;每个触发器可以执行多个函数。但是,每个触发器只能应用于一个表,而单个触发器可应用于三个用户操作(UPDATE、INSERT 和 DELETE)的任何子集。

一个表只能有一个给定类型的 INSTEAD OF 触发器。

sdhdy 2003-09-28
  • 打赏
  • 举报
回复
对表进行insert:在inserted表中有刚增加的记录。
对表进行update:在inserted表中有刚更新的记录,在delete表中有更新前的记录。
对表进行delete:在delete表中有刚删除的记录。
-------------------------------------------------------------------
for example
--table1在插入数据时,同时向table2 插入相同的记录
create trigger tri1 on table1
for insert
as
insert table2 select * from inserted
伍子V5 2003-09-28
  • 打赏
  • 举报
回复
首先你要了解什么是触发器,看看自己能不能用上

创建触发器
创建触发器前应考虑下列问题:

CREATE TRIGGER 语句必须是批处理中的第一个语句。将该批处理中随后的其它所有语句解释为 CREATE TRIGGER 语句定义的一部分。


创建触发器的权限默认分配给表的所有者,且不能将该权限转给其他用户。


触发器为数据库对象,其名称必须遵循标识符的命名规则。


虽然触发器可以引用当前数据库以外的对象,但只能在当前数据库中创建触发器。


虽然不能在临时表或系统表上创建触发器,但是触发器可以引用临时表。不应引用系统表,而应使用信息架构视图。有关更多信息,请参见信息架构视图。


在含有用 DELETE 或 UPDATE 操作定义的外键的表中,不能定义 INSTEAD OF 和 INSTEAD OF UPDATE 触发器。


虽然 TRUNCATE TABLE 语句类似于没有 WHERE 子句(用于删除行)的 DELETE 语句,但它并不会引发 DELETE 触发器,因为 TRUNCATE TABLE 语句没有记录。


WRITETEXT 语句不会引发 INSERT 或 UPDATE 触发器。
创建触发器时需指定:

名称。


在其上定义触发器的表。


触发器将何时激发。


激活触发器的数据修改语句。有效选项为 INSERT、UPDATE 或 DELETE。多个数据修改语句可激活同一个触发器。例如,触发器可由 INSERT 或 UPDATE 语句激活。


执行触发操作的编程语句。
多个触发器
一个表中可有同类型的多个 AFTER 触发器,前提条件是它们的名称各不相同;每个触发器可以执行多个函数。但是,每个触发器只能应用于一个表,而单个触发器可应用于三个用户操作(UPDATE、INSERT 和 DELETE)的任何子集。

一个表只能有一个给定类型的 INSTEAD OF 触发器。

触发器权限和所有权
CREATE TRIGGER 权限默认授予定义触发器的表所有者、sysadmin 固定服务器角色成员以及 db_owner 和 db_ddladmin 固定数据库角色成员,并且不可转让。

如果在某个视图上创建 INSTEAD OF 触发器,则所有关系链将断开(如果视图所有者不同时拥有视图和触发器所引用的基表)。对于不属于视图所有者的基表,表所有者必须单独地将必要的权限授予正阅读或更新该视图的任何人。如果同一用户拥有视图和基础基表,则视图和基础基表必须授予其他用户视图的权限,而非个别基表的权限。有关更多信息,请参见使用所有权链。

创建触发器

34,874

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧