[SqlServer01]-数据库表及数据操作控制
来源:互联网 发布:恒慧融软件 编辑:程序博客网 时间:2024/06/06 00:59
有时候我们希望某些表的数据不能被删除,可以使用下面的触发器。
Create trigger [dbo].[trg_del] on [dbo].LogInfo
instead of delete
AS
BEGIN
declare @cou int
select @cou=count(*) from deleted;
if (@cou>0)
RAISERROR('数据不允许删除!', 16, 1)
END
但需要注意 truncate table LogInfo 命令依然会正确执行,因为truncate 不会触发触发器,不会写日志,所以无法回滚,使用时要谨慎。
有时候我们需要灵活指定一些用户可以删除和修改数据表结构,未指定的用户则不能做这些操作,可以使用下面的触发器
CREATE TRIGGER TR_Safety_Table
ON DATABASE
FOR DROP_TABLE, ALTER_TABLE
AS
IF( ( SUSER_SNAME() <>'sa' )and (SUSER_SNAME() <>'test') )
BEGIN
PRINT '你无DROP TABLE 和 ALTER TABLE 的权限!'
ROLLBACK
END
关于数据库或表的权限其实可以通过角色,权限来控制,下面是常用的一些基本语句,写在这里备忘。
--登陆、用户与权限
--删除登陆
--exec sp_droplogin 'test'
--新建登陆
exec sp_addlogin @loginame = N'test',
@passwd = '123456',
@defdb = N'TestDB',
@deflanguage = N'Simplified Chinese',
@sid = NULL,
@encryptopt = NULL
GO
--删除用户
--exec sp_dropuser 'test'
exec sp_adduser 'test'
--授权
GRANT SELECT, INSERT, UPDATE, DELETE
ON LogInfo
TO test
--收回权限
revoke DELETE on LogInfo from test;
--拒绝权限
deny DELETE on LogInfo TO test;
--授予角色权限
--exec sp_addrolemember 'db_owner','test'
--列出全部表名
--select name from sysobjects where xtype = 'U' order by name
- [SqlServer01]-数据库表及数据操作控制
- 【Oracle数据库】数据操作与事务控制
- Android数据库sqlite3中的表及数据的操作
- Android的数据存储及数据库操作
- Oracle数据库数据操作和控制语言详解(精华)
- ORACLE数据库操作学习及数据同步操作
- 数据控制、定义、操作
- 批处理操作Oracle数据库创建表空间、用户及导入数据
- 数据库的连接及数据读取,显示操作
- Oracle10g数据库用户创建及数据导入导出操作
- C#数据库类库及操作数据基础
- 数据操作与事务控制
- 数据库中的数据版本控制
- 报告论文:建立数据库 练习SQL语言进行数据定义、操作、控制
- SQL指令 数据库表数据的操作
- 数据库____操作表中数据
- Oracle数据库用户及表的操作
- hive元数据库表分析及操作
- SPU/SKU/商品
- PS 滤镜——运动模糊
- ubuntu live CD修复受损的Windows引导MBR
- Evaluate Reverse Polish Notation
- android 开发相关资料
- [SqlServer01]-数据库表及数据操作控制
- 32位和64位系统区别及int字节数
- Error creating bean with name 'UserManger' defined in class path resource [user/applicationContext.x
- 【LeetCode】Clone Graph 解题报告
- 小度路由刷openwrt
- Mina的入门(一)
- wxWidgets 自定义事件触发
- Microsoft FxCop 的设计规则 .
- 通过SQL语句来造出两个日期之间的所有月份