MSSQL网站制作之用Trigger标准insert, update的值
MySQL这个名字是怎么来的已经不清楚了。基本指南和大量的库和工具带有前缀“my”已经有10年以上,而且不管怎样,MySQLAB创始人之一的的女儿也叫My。</p>假定有表A,CREATETABLEA(
IDINTNOTNULLIDENTITY(1,1),
ProductIDINTNOTNULL,
RetailerIDINTNOTNULL,
DateDATETIMENOTNULL
CONSTRAINTA_PKPRIMARYKEY(ProductID,RetailerID,Date)
);
我的意义是想让ProductID,RetailerID和Date(不包含小时,分钟等)成为主键。
即:某一天里,retailerID和ProductID是独一的。
SQLServer里,DateTime是能够存储小时、分钟等的,假如程序只要我本人写,我会标准输出的日期,让其只包括日期部分。但如果间接改数据库,就只要经由过程触发器来标准了。
Oracle和MySQL的触发器都有两个工具:NEW和OLD,但SQLServer没有,SQLServer有INSTERED和DELETED这两个逻辑表,详细可参考SQLServer的匡助。
在Oracle和MySQL里,只需用:
NEW.FieldName=XXX;
就能够变动INSERT或UPDATE的值了,在SQLServer里,今朝,我只晓得用UPDATE,用着很不便利:
CREATETRIGGERA_TONAFORINSERT,UPDATEAS
BEGIN
UPDATEA
SETDate=SUBSTRING(CONVERT(VARCHAR,I.Date,20),1,10)
FROMINSERTEDI
WHEREI.ID=A.ID
END;
好了,INSERT一条尝尝:
INSERTINTOA(ProductID,RetailerID,Date)VALUES(1,2,2009-11-1612:57:43);
能够看到:
(1行受影响)
(1行受影响)
即做了两次操纵。。。
不晓得另有没有别的办法没有。
Archive非常适合存储大量的独立的,作为历史记录的数据。因为它们不经常被读取。Archive拥有高效的插入速度,但其对查询的支持相对较差 我是一个ERP初学者,对于前台运用基本熟悉,但对于后台SQLServer的运用一点也不懂,特想学习下相关资料。至少懂得一些基本的运用。希望各位能给于建议,小弟再谢过! 对于微软系列的东西除了一遍遍尝试还真没有太好的办法 我们学到了什么?思考问题的时候从表的角度来思考问 微软对CLR作了大篇幅的宣传,这是因为数据库产品终于融入.net体系中。最开始我们也是狂喜,感觉对象数据库的一些概念可以实现了。 分区表是个亮点!从分区表也能看出微软要做大作强SQLServer的信心。资料很多,这里不详细说。但是重点了解的是:现在的SQLServer2005的表,都是默认为分区表的。因为它要支持滑动窗口的这个特性。这种特性对历史数据和实时数据的处理是很有帮助的。 学习SQL语言的话如果要学会去做网站就不是很难!但是要做数据库管理的话就有难度了! 原理很简单,对要求长时间计算某一时间点的报表生成和防用户操作错误很有帮助。但是比起Oracle10g的闪回技术还是细粒度不够。可惜! 可能有的朋友会抱怨集成的orderby,其实如果使用ranking函数,Orderby是少不了的。如果担心Orderby会影响效率,可以为orderby的字段建立聚集索引,查询计划会忽略orderby操作(因为本来就是排序的嘛)。
页:
[1]