SQL Server 2005ÖеÄT SQLÔöÇ¿F
DDL´¥·¢Æ÷ DDL Triggers
SQL Server 2005¿ÉÒÔ¾ÍÕû¸ö·þÎñÆ÷»òÊý¾Ý¿âµÄij¸ö·¶Î§ÎªDDLʼþ¶¨Òå´¥·¢Æ÷¡£Ò²¿ÉÒÔΪµ¥¸öDDLÓï¾ä£¨ÀýÈ磺CREAT_TABLE¡¢DROP_TABLEµÈ£©»òÕßΪһ×éÓï¾ä£¨ÀýÈ磺ָ¶¨DDL_DATABASE_LEVEL_EVENTSÏëÒª´¥·¢Æ÷´¥·¢Êý¾Ý¿âËùÓÐDDLʼþ£©¶¨ÒåDDL´¥·¢Æ÷¡£
ÔÚDDL´¥·¢Æ÷ÄÚ²¿£¬¿ÉÒÔͨ¹ý·ÃÎÊeventdata()º¯Êý»ñµÃÓ뼤·¢¸Ã´¥·¢Æ÷µÄʼþÓйصÄÊý¾Ý¡£¸Ãeventdata()º¯Êý·µ»ØÓйØÊ¼þµÄxmlÊý¾Ý¡£
DDL´¥·¢Æ÷ÌØ±ðÓÐÓõķ½°¸°üÀ¨DDL¸ü¸ÄµÄÍêÕûÐÔ¼ì²é¡¢ÉóºË·½°¸ÒÔ¼°ÆäËû·½°¸¡£
´úÂëÑÝʾ£º
USE demo
GO
CREATE TRIGGER prevent_drop_table ON DATABASE FOR DROP_TABLE
AS
RAISERROR('ûÓÐɾ³ý±íµÄȨÏÞ.', 10, 1)
PRINT '³¢ÊÔÔÚÊý¾Ý¿â' + DB_NAME() + 'ÖÐɾ³ý±í.'
PRINT CONVERT (nvarchar (1000),EventData())
ROLLBACK
GO
-- ²âÊÔ
CREATE TABLE TestDROP(col1 INT)
GO
INSERT INTO TestDROP VALUES(1)
DROP TABLE testdrop
-- Server
CREATE TRIGGER audit_ddl_logins ON ALL SERVER
FOR CREATE_LOGIN, ALTER_LOGIN, DROP_LOGIN
AS
PRINT '·¢ÉúDDL LOGIN.'
PRINT CONVERT (nvarchar (1000),EventData())
GO
-- ²âÊÔ
CREATE LOGIN login1 WITH PASSWORD = '123'
ALTER LOGIN login1 WITH PASSWORD = 'xyz'
DROP LOGIN login1
×ܽá
SQL Server 2005ÖеÄTransaction-SQLÔöÇ¿¹¦ÄÜÌá¸ßÁËÓû§ÔÚ±àд²éѯʱµÄ±í´ïÄÜÁ¦£¬Ê¹Óû§¿ÉÒÔ¸ÄÉÆ´úÂëµÄÐÔÄÜ£¬²¢ÇÒÀ©³äÁË´íÎó´¦ÀíÄÜÁ¦¡£SQL Server 2005 ÔÚTransaction-SQLÉÏËù×öµÄ¸Ä½ø·´Ó³ÁËÆä¸üºÃµØÂú×ãÁËANSI-99 SQL¹æ·¶µÄÒªÇóÒÔ¼°¿Í»§µÄÐèÇó¡£ÔÚTransaction-SQLºÍÍйܴúÂëÖ®¼äµÄÑ¡Ôñ¡£
Ïà¹ØÎĵµ£º
Èç¹ûÄúÊý¾Ý¿âϵͳ°²×°ÔÚϵͳÅÌ£¨±ÈÈç C ÅÌ£©£¬ÓÉÓÚ C ÅÌÈÝÒ×Êܲ¡¶¾ÇÖº¦£¬ÄúÒ²ÐíÏ£ÍûÄúµÄÊý¾Ý´æ·ÅÔÚ·ÇϵͳÅÌ£¨±ÈÈç D ÅÌ£©£¬Òª×öµÄÕâµãºÜ¼òµ¥£¬Äú²¢²»ÐèÒªÖØ×°Êý¾Ý¿â£¬Ö»Òª°ÑÊý¾Ý“·ÖÀ딣¬È»ºó½«Ïà¹ØÎļþÒÆ¶¯µ½ D Å̵Äij¸öĿ¼£¬½Ó×Å“¸½¼Ó”Êý¾Ý¿â¼´¿É¡£
SQL Server 2000ÔÊÐí·ÖÀëÊý¾Ý¿âµÄÊý¾ÝºÍÊÂÎñÈ ......
ͨÓñí±í´ïʽ Common Table Expressions
ͨÓñí±í´ïʽ£¨CTE£©ÊÇÒ»¸ö¿ÉÒÔÓɶ¨ÒåÓï¾äÒýÓõÄÁÙʱ±íÃüÃûµÄ½á¹û¼¯¡£ÔÚËûÃǵļòµ¥ÐÎʽÖУ¬Äú¿ÉÒÔ½«CTEÊÓΪÀàËÆÓÚÊÓͼºÍÅÉÉú±í»ìºÏ¹¦ÄܵĸĽø°æ±¾¡£ÔÚ²éѯµÄfrom×Ó¾äÖÐÒýÓÃCTEµÄ·½Ê½ÀàËÆÓÚÒýÓÃÅÉÉú±íºÍÊÓͼµÄ·½Ê½¡£Ö»Ð붨ÒåCTEÒ»´Î£¬¼´¿ÉÔÚ²éѯÖжà´ÎÒýÓÃËü¡£ÔÚCTEµÄ¶¨ÒåÖУ¬¿ÉÒÔÒ ......
1¡£select * from a where a.rowid=(select min(b.rowid) from b where a.id=b.id);
create test1(
nflowid number primary key,
ndocid number,
drecvdate date);
insert into test1 values (1, 12301, sysdate) ;
insert into test1 values (2, 12301, sysdate);
select * from test1 order by drecvdate:
......
TOP ÔöÇ¿¡£¿ÉÒÔÖ¸¶¨Ò»¸öÊý×Ö±í´ïʽ£¬ÒÔ·µ»ØÒªÍ¨¹ý²éѯӰÏìµÄÐÐÊý»ò°Ù·Ö±È£¬»¹¿ÉÒÔ¸ù¾ÝÇé¿öʹÓñäÁ¿»ò×Ó²éѯ¡£
¿ÉÒÔÔÚDELETE¡¢UPDATEºÍINSERT²éѯÖÐʹÓÃTOPÑ¡Ïî¡£
2¡¢¸üºÃµØÌæ»»SET ROWCOUNTÑ¡Ïʹ֮¸üΪÓÐЧ¡£
OUTPUT
1¡¢SQL Server 2005ÒýÈëÒ»¸öеÄOUTPUT×Ӿ䣬ÒÔʹÄú¿ÉÒÔ³åÐÞ¸ÄÓï¾ä(INSERT¡¢UPDATE¡¢DELETE)ÖÐ ......