sql触发器禁止删除数据(如何写一个SQL触发器,禁止删除一张表)

本文目录
- 如何写一个SQL触发器,禁止删除一张表
- MSSQL 触发器 不能删除数据
- SQL触发器禁止删除或修改数据库A中的任何表
- SqlServer2005 怎样建触发器 防止数据表被删除
- SQL中如何保证某个特定的数据不能被删掉
- MSSQL怎样禁止删除某条记录
- MS SQL server:写一个触发器,禁止有人删除 X表中的 Y列
- sql数据库如果班级中还有学生,不允许删除班级记录用触发器怎么实
如何写一个SQL触发器,禁止删除一张表
Create Trigger truStudent
On Student --在Student表中创建触发器
for Update --要触发的事件
As --事件触发后所要做的事情
if Update(StudentID)
begin
................
end
应该说在删除记录的时候,你的主键肯定也是会被删除的。Delete(pk) 应该也能捕获到,当然这只是一种尝试,
Create trigger Simple
on Employee
instead of delete
as
select * from Employee where 2!=2;
instead of delete 就是当删除 Employee表中数据时,将我们删除Employee表中数据的sql替换为as后的sql语句.我这里写了个不可能成立的条件,也就是说。当删除Employee中数据时会替换执行这条不成立的sql,结果就是表中的数据没有被删除。(Sql Server测试通过)
MSSQL 触发器 不能删除数据
由于 MySQL 没有直接抛出异常的语句 因此这里通过在触发器里面,插入/删除自己这个表 导致 MySQL 发生异常 发生异常了, 就会自动回滚掉 删除数据的处理了. 一个例子 货物表 CREATE TABLE Goods( id INT, Amount INT ); 订单表 CREATE TABLE Orde...
SQL触发器禁止删除或修改数据库A中的任何表
a触发器中已经开启 而b触发器也开启了 此时a触发器还没有关闭IDENTITY_INSERT 另外一个又打
SqlServer2005 怎样建触发器 防止数据表被删除
我这里有一个 创建表的触发器, 你参考着修改修改成 删除表的吧
1》 CREATE TRIGGER CretaeTableTrigger
2》 ON DATABASE
3》 FOR CREATE_TABLE
4》 AS
5》 BEGIN
6》 DECLARE @EventData AS xml;
7》
8》 DECLARE @EventType AS varchar(100);
9》 DECLARE @PostTime AS varchar(100);
10》 DECLARE @ServerName AS varchar(100);
11》 DECLARE @LoginName AS varchar(100);
12》 DECLARE @DatabaseName AS varchar(100);
13》 DECLARE @CommandText AS varchar(100);
14》
15》 SET @EventData = EVENTDATA();
16》
17》 SELECT
18》 @EventType = t.c.value(’(EventType)’, ’varchar(100)’ ),
19》 @PostTime = t.c.value(’(PostTime)’, ’varchar(100)’ ),
20》 @ServerName = t.c.value(’(ServerName)’, ’varchar(100)’ ),
21》 @LoginName = t.c.value(’(LoginName)’, ’varchar(100)’ ),
22》 @DatabaseName = t.c.value(’(DatabaseName)’, ’varchar(100)’ ),
23》 @CommandText = t.c.value(’(TSQLCommand/CommandText)’, ’varchar(100
)’ )
24》 FROM
25》 @EventData.nodes(’/EVENT_INSTANCE’) t(c);
26》
27》 PRINT( ’CREATE_TABLE’ );
28》 PRINT( @EventType );
29》 PRINT( @PostTime );
30》 PRINT( @ServerName );
31》 PRINT( @LoginName );
32》 PRINT( @DatabaseName );
33》 PRINT( @CommandText );
34》 END
35》 go
1》 create table yyy (a INT);
2》 go
CREATE_TABLE
CREATE_TABLE
2010-10-01T21:32:24.843
HOME-BED592453C\SQLEXPRESS
HOME-BED592453C\wzq
Stock
create table yyy (a INT);
SQL中如何保证某个特定的数据不能被删掉
insert into album values(1,’xxx’,’zzz’,’ccc’)
create trigger tbl_delete
on album
for delete
as
if ((select count(*) from deleted where album_name=’xxx’)》0)
begin
rollback transaction
print ’不能删除’
end
go
delete album where album_name=’xxx’
select * from album
结果显示:不能删除
大概的意思就是这样,希望对你思路有帮助
MSSQL怎样禁止删除某条记录
这个用触发器来解决
如下
:
--假如table_A(col1 char(10),col2 char(10));禁止删除col1=‘AAA’的记录
create table table_A(col1 char(10),col2 char(10))
insert into table_A values(’AAA’,’BBB’);
SELECT * FROM table_A
/*
col1 col2
---------- ----------
AAA BBB
(1 行受影响)*/
ALTER TRIGGER CANNOTDELETE
ON TABLE_A AFTER DELETE
AS
BEGIN
if ((select count(1) from Deleted where col1=’AAA’)》1)
PRINT ’Don Delete table_A where col1=AAA’
rollback;
END
delete table_A where col1=’AAA’
/*
消息 3609,级别 16,状态 1,第 1 行
事务在触发器中结束。批处理已中止。
*/
SELECT * FROM table_A
/*
col1 col2
---------- ----------
AAA BBB
(1 行受影响)*/
MS SQL server:写一个触发器,禁止有人删除 X表中的 Y列
1、如果你问的是如何禁止删除x表的y列 这个列 这个属于ddl操作,sql server2000是无法做到控制ddl操作的,也就是说 它不支持ddl触发器。所以只能通过程序来控制
2、如果你问的是如何禁止删除x表的y列的内容 而不是删除整个列 那可以使用触发器(不过这样意义不大)
create trigger tr_d on X
before delete
begin
print ’禁止删除y列的内容’;
rollback;
end
sql数据库如果班级中还有学生,不允许删除班级记录用触发器怎么实
在班级的表上建一个触发器。
触发器类型:行级触发器
触发条件:删除班级记录是触发
触发处理:当触发后,先用触发行中的班级ID到学生表中检查,看是否有该班级的学生存在。
如果存在在直接抛出异常。
具体代码,根据你所用的数据库所决定

更多文章:
html document对象(载入浏览器的html文档都会成为document的对象吗)
2026年9月21日 16:00
安装包怎样下载mysql(如何在官网上下载可安装版的MySQL数据库)
2026年9月21日 15:30
威廉尖叫音效在线(渴求《勇敢的心》的配乐a gift of a thistle下载)
2026年9月21日 15:20
wordpress建站教程视频(WordPress建站的基本流程)
2026年9月21日 14:00
powerquery(power query中文含义是什么)
2026年9月21日 11:50
reactnative文档扫描(为什么要学习React Native)
2026年9月21日 10:30
aptana studio 3 windows 10(aptana studio 3 怎么改成中文)
2026年9月21日 09:20


