数据库
jimzhao
这个作者很懒,什么都没留下…
展开
-
SQL SERVER 角色说明(摘自MSDN)
服务器级别角色 为便于管理服务器上的权限,SQL Server 提供了若干“角色”,这些角色是用于分组其他主体的安全主体。“角色”类似于 Microsoft Windows 操作系统中的“组”。服务器级角色也称为“固定服务器角色”,因为您不能创建新的服务器级角色。服务器级角色的权限作用域为服务器范围。您可以向服务器级角色中添加 SQL Server 登录名、Window原创 2009-12-04 10:28:00 · 1494 阅读 · 0 评论 -
各种数据库对表名长度的限制
SQLSERVER 128个字符,临时表116个字符。Oracle 30个字符。(为什么要这么短?)MySQL 64个字符。Access 64个字符。DB2 128个字符? 其它等待补充...原创 2009-12-04 10:41:00 · 21797 阅读 · 0 评论 -
Transact-SQL中Delete语句表名不能用别名?!
昨天发现程序中数据分析的结果不对,重新进行分析后,原数据仍在,有值的字段别累计。心说,不对啊,是重新生成记录后才分析的啊。难道忘了DELETE了?查代码,发现有删除语句。于是在查询分析器中执行,报错。反复试几次,明白了,Delete From不认表名别名!程序改完后主要是在Oracle中测的,SQLServer一直没细测。两点经验:1、测试要全面;2、要自信,写程序时考虑的情况挺全的。原创 2010-06-03 09:23:00 · 4501 阅读 · 2 评论 -
sqlserver在触发器中执行动态sql用到inserted(deleted)表
这两天公司产品中要加个数据同步用的触发器,oracel版没什么问题,很顺利的写完了。 在写sqlserver版时遇到了麻烦。由于在触发器中要根据inserted(deleted)表的数据,对另一个表进行更新操作,而这个表的某些字段是不固定的,所有需要些成动态sql,利用exec来执行。这时麻烦来了,exec执行时,无法访问到inserted(deleted)表。坏了,这该如何是好?经反复google+baidu+试验,问题总算解决了。总结一下,大致有以下两种方法: 1、将in原创 2010-10-11 10:11:00 · 2409 阅读 · 0 评论 -
用触发器干扰更新值(Oracle)
有时候需要改变应用程序中更新字段的值,但是又不能改程序的代码,那么可以用触发器来干扰更新值。例子:当修改表table_a的字段field_a的值为‘02’时,利用触发器强行将其改为‘03’create or replace trigger table_trg before update of field_a on table_a for each rowbegin if updating and (:new.field_a='02') then :new.field_a原创 2010-11-25 16:35:00 · 742 阅读 · 0 评论 -
奇怪的“无法为更新定位行。一些值可能已在最后一次读取后已更改”
客户说程序报错——“无法为更新定位行。一些值可能已在最后一次读取后已更改”。反复试之无法再现。再问客户,说用的是Oracle数据库,一试,果不其然,报错。查代码,发现原来是这个样子滴:FDataSet.Edit;FDataSet.FieldValues[FMenu.cItemid] := Text;FDataSet.Post;当第一次Text=''时,post没有异常,紧接着第二次Text''时,post报错!!!这是为神马呢?原来啊,oracle库默认的''和NULL是一回事,于是第一次Post后,Dat原创 2011-02-23 17:12:00 · 3351 阅读 · 0 评论 -
拼接SQL语句的优雅姿势
StringBuffer sql = new StringBuffer();sql.append("select A.constraint_name,A.column_name");sql.append(" from dba_cons_columns A LEFT JOIN dba_constraints B");sql.append(" ON A.table_name=B.table_na原创 2022-09-15 14:02:59 · 1269 阅读 · 0 评论