|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
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拥有高效的插入速度,但其对查询的支持相对较差 |
|