Asp.net开发常见问题集锦

  1,select参数中如果含有单引号怎么办?

<ext:SearchPattern Name="PaperSchemeName"  ReplaceQuote="true"  Pattern="{0}" />

 ReplaceQuote="true"  表示不要将单引号替换成双单引号 (该办法只适用用品高BingoWeb框架扩展的数据源控件)。

 

2.视图上可以建立触发器吗?

可以建立,但是必须是instead of

create trigger tr_g4

on dbo.test23

instead of insert

as

 begin

 print 'fuck'

 end

 

 

3,在触发器里面,Column_updated() 函数会返回一个位模式的varbinary的数据类型来标示那些更新的列,如果对应的列上是1就说明被更新了。(一般很少用到这种用法)

 

4,在触发器中可以调用 inserted deleted 映像表,里面存储着被插入和删除的数据。

 

 

5,触发器最多可以递归调用32 Trigger_NestLevel()

 

 

6,如何让某个列或者某些列组合成为必须唯一,做check约束?

  示例:

create table checkTable

(

   _ID int identity(1,1),

   _Name varchar(20) not null,

   _lastName varchar(20) NOT NULL

 

)

 

alter   table   checkTable  

  add   constraint   zzb_1   unique(_Name,_lastName)

 

SELECT * FROM checkTable

 

INSERT checkTable VALUES('zzb','hello')

 

INSERT checkTable VALUES('zzb','hello')

 

如果要联合多个键值必须唯一但是又不方便把他们设置成主键,那么可以用add   constraint   zzb_1   unique(_Name,_lastName)

 

 

7,视图可以可以更新:

 如下几种情况:1,单表的查询,如果有join表,那么只update 或者insert join的其中一个表。 2,包含group by 的视图是不可以更新的。

 

 

8,视图的性能问题。

   视图不是预编译的,也就是说,你调用的时候,视图的执行步骤如下:

                                    1,首先会根据 视图的sql语句将sql语句和里面的视图(如果嵌套了视图)拼装成一个完整的sql语句。

                                    2,解析这个sql语句,如果表名没有制定所有者,比如家dbo.table 等,这个时候,sql做出决定去引用那张表,因为有可能张三

                                          建了一个表叫 table1  李四也建立了一张表叫table1, 如果你写视图的时候,没有告诉sql你具体是引用那张表的话系统就默认

                                          是当前用户的那张表,其次才是 dbo 的引用。

                                     3,进行安全性处理和检查,看当前这个视图的用户是否有权限访问视图中引用的表。,如果权限检查不通过,会抛出错误。

                                     4,执行合并 返回结果。

 

一般来说,同样的查询,视图要比存储过程要慢一点点。

 

 

9,疑问:为什么 视图中不使用top 就不能用order by 语句呢?

 

10,一般如果视图中这样写,select table1.Name from table1 但是 如果一旦table1 的表结构改变,比如不叫name了,这个时候,调用视图就会出错,

     sql有一种视图保护机制,可以用视图将表结构锁住,不让修改。

     这样写: select * from table1 with SCHEMABINDING

 

 

 

11,set nocount off / on

 

set nocount off时候,会阻止sqlserver放回执行成功的结果数目

 

就是上面的这样的信息,如果 set nocount on 的话,那么执行结果是这样的

他只显示命令成功完成而已。

对于我们写存储过程的时候,如果设置为off 的时候,可以显著的提高性能。因为这样可以减少网络流量。

 

 

 

 

12,@@rowcount 用法

可以返回当前进程用户的最后一次执行语句返回的结果数目,(注:set nocount on并不会影响@@rowcount的结果)。

比如 select * from table1 where 1 = 2 这个时候,@@rowcount = 0

          select * from table1 where 1 = 1 这个时候,@@rowcount = 1

注:@@rowcount  @@errorcount 等这些系统全局变量是用户级别的

 

 

 

 

转载于:https://www.cnblogs.com/zzb19840918/archive/2010/11/02/1867576.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值