在Sql Servr数据库中利用触发器来控制某一列不让用户进行修改的方法

本文介绍如何使用 SQL Server 的触发器来阻止特定字段的更改,通过两种方法实现用户名字段不可更改,确保数据一致性。

在程序开发经常会遇到一些数据库中的列一旦被创建就不能随意的修改的情况,如用户管理系统中如果创建了一个用户那么用户名就不能随意的更改了,这种情况可以借助sql server的触发器来实现。

方法一:

create  trigger aaa on admin--表名
for update
as
if update(username)--username就是不能被随意更改的字段

rollback transaction--直接回滚操作
 

方法二:

create  trigger aaa on admin--表名
for update
as
if update(username)--username就是不能被随意更改的字段

update admin set admin.username=deleted.username from admin,deleted where admin.id=deleted.id

/**

由于表中的记录在update时会产生2步操作,1.先删除记录存放在deleted这个虚拟表中;2执行insert操作

本语句就是直接将删除存放到deleted表中的记录进行update回去,因此是没有被update的

**/

SQL Server连接数据库有多种方法,以下为你详细介绍: - **C#操作连接**:首先创建一个全局变量存储服务器地址,然后创建一个链接数据库的对象`SqlConnection`,最后打开数据库连接。示例代码如下: ```csharp // 第一步:先创建一个全局变量变量存储服务器地址 public string connString = @"Server=192.168.113.65,51187\SQLEXPRESS;DataBase=StudentManageDB;Uid=sa;Pwd=123456"; // 第二步:创建一个链接数据库的对象SqlConnection public SqlConnection conn = new SqlConnection(connString); // 第三步:打开数据库连接 conn.Open(); ``` 连接自己数据库时,`connString`可设为`@"Server=.,1433\MSSQLSERVER11;DataBase=ClianSql;Uid=sa;Pwd=123456"` [^1]。 - **远程连接**:若未远程登录过,需进行设置。右击数据库栏最上方的数据库名(电脑名或IP),选属性,点击安全性,选中右侧身份验证中的“SQL server和身份验证模式”并确定。再次右击数据库名,选择中间位置的重启(restart),选择是。最后,断开数据库连接,选择密码登录,尝试是否开启成功,之后便可再次远程连接 [^2]。 - **不同身份验证模式连接**: - **Windows身份验证模式**:SQL Server使用Windows的安全子系统对用户连接进行有效性验证,即使显示地指定用户ID和密码,SQL Server也不检查连接字符串中的用户ID和密码。只有Windows NT、2000、XP支持SSPI,使用这些操作系统时,只能用Windows集成的安全策略连接SQL Server。 - **SQL Server身份验证**:不论使用哪一个操作系统,使用该身份验证时,必须在连接字符串中指定用户ID和密码,如`Data Source=ServerName;User ID=donaldx;Password=unbreakable` [^3]。 - **Python连接**:可直接用sql语句将`varchar`转为`nvarchar`类型,无需指定`charset`,示例语句为`select convert(nvarchar(50),table_colum) as 'nvarchar_colum' from mytable where convert(nvarchar(50),table_colum) = '魏本明'`,此语句将需要转换的列(如`varchar`)转换为`nvarchar`来完成连接操作 [^4]。
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值