ms sql சேவையகத்தில் தூண்டுதல்களின் எடுத்துக்காட்டுகள். தூண்டுதல் (தரவுத்தளம்). DDL தூண்டுதல்கள் மற்றும் அவற்றின் பயன்பாடுகள்

தூண்டுதல்:

<Определение_триггера>::= (உருவாக்கு | மாற்றவும்) TRIGGER தூண்டுதல்_பெயரை இயக்கவும் (அட்டவணை_பெயர் பிரதி ] sql_statement ஆக[...n] ) | ( ( [,] ) [ ] நிரல்_பெயர்)] [...n] |.

ஒரு தூண்டுதலை தற்போதைய தரவுத்தளத்தில் மட்டுமே உருவாக்க முடியும், ஆனால் தொலை சேவையகத்தில் உள்ளவை உட்பட பிற தரவுத்தளங்களை தூண்டுதலுக்குள் அணுக முடியும்.

CREATE | என்பதில் இருந்து வாதங்களின் நோக்கத்தைப் பார்ப்போம் தூண்டுதலை மாற்றவும்.

தூண்டுதல் பெயர் தரவுத்தளத்தில் தனிப்பட்டதாக இருக்க வேண்டும். கூடுதலாக, நீங்கள் உரிமையாளரின் பெயரைக் குறிப்பிடலாம்.

நீங்கள் என்கிரிப்ஷன் வாதத்துடன் குறிப்பிடும்போது, ​​சர்வர் தூண்டுதல் குறியீட்டை குறியாக்குகிறது, இதனால் நிர்வாகி உட்பட யாரும் அதை அணுகவோ படிக்கவோ முடியாது. புரோகிராமரின் அறிவுசார் சொத்து அல்லது வர்த்தக ரகசியமான தனியுரிம தரவு செயலாக்க வழிமுறைகளை மறைப்பதற்கு குறியாக்கம் பெரும்பாலும் பயன்படுத்தப்படுகிறது.

தூண்டுதல் வகைகள்

IN SQL சர்வர்தூண்டுதல்களின் நடத்தையை தீர்மானிக்கும் இரண்டு அளவுருக்கள் உள்ளன:

  • பிறகு. அதை அழைத்த கட்டளைகள் வெற்றிகரமாக முடிந்ததும் தூண்டுதல் செயல்படுத்தப்படுகிறது. எந்த காரணத்திற்காகவும் கட்டளைகளை வெற்றிகரமாக முடிக்க முடியாவிட்டால், தூண்டுதல் செயல்படுத்தப்படாது. பயனர் கோரிக்கையை செயல்படுத்துவதன் விளைவாக தரவு மாற்றங்கள் மற்றும் தூண்டுதல் செயல்படுத்தல் ஆகியவை ஒரு பரிவர்த்தனையின் உடலில் மேற்கொள்ளப்படுகின்றன என்பதைக் கவனத்தில் கொள்ள வேண்டும்: தூண்டுதல் திரும்பப் பெறப்பட்டால், பயனர் மாற்றங்களும் நிராகரிக்கப்படும். ஒவ்வொரு செயல்பாட்டிற்கும் பல தூண்டுதல்களுக்குப் பிறகு நீங்கள் பலவற்றை வரையறுக்கலாம் (செருகுதல், புதுப்பித்தல், நீக்குதல்). உங்களிடம் பல பின் தூண்டுதல்கள் டேபிளில் இருந்தால், sp_settriggerorder சிஸ்டம் ஸ்டோர்டு செயல்முறையைப் பயன்படுத்தி எந்த தூண்டுதல் முதலில் இயங்கும் மற்றும் எது கடைசியாக இயங்கும் என்பதைக் குறிப்பிடலாம். இயல்பாக, SQL சேவையகத்தில், அனைத்து தூண்டுதல்களும் தூண்டுதல்களுக்குப் பிறகு இருக்கும்.
  • அதற்கு பதிலாக . கட்டளைகளை இயக்குவதற்கு பதிலாக தூண்டுதல் அழைக்கப்படுகிறது. பின் தூண்டுதலைப் போலல்லாமல், ஒரு அட்டவணை மற்றும் பார்வை இரண்டிற்கும் தூண்டுதலின் பதிலாக வரையறுக்கலாம். ஒவ்வொரு நுழைவு, புதுப்பிப்பு, நீக்குதல் செயல்பாட்டிற்கும், தூண்டுதலுக்குப் பதிலாக ஒருவரை மட்டுமே வரையறுக்க முடியும்.

தூண்டுதல்கள் அவை பதிலளிக்கும் கட்டளைகளின் வகையால் வேறுபடுகின்றன.

மூன்று வகையான தூண்டுதல்கள் உள்ளன:

  • INSERT TRIGGER - INSERT கட்டளையைப் பயன்படுத்தி தரவைச் செருக முயற்சிக்கும்போது தூண்டப்பட்டது.
  • UPDATE TRIGGER - UPDATE கட்டளையைப் பயன்படுத்தி தரவை மாற்ற முயற்சிக்கும்போது தூண்டப்படுகிறது.
  • DELETE TRIGGER – DELETE கட்டளையைப் பயன்படுத்தி தரவை நீக்க முயற்சிக்கும்போது தூண்டப்படுகிறது.

கட்டுமானங்கள் [ நீக்கு] [,] [ செருகு ] [,] [ புதுப்பிக்கவும்]மற்றும் க்கு | பிறகு | அதற்கு பதிலாக ) ([,]தூண்டுதல் எந்த கட்டளைக்கு பதிலளிக்கும் என்பதை தீர்மானிக்கவும். அதை உருவாக்கும் போது, ​​குறைந்தபட்சம் ஒரு கட்டளையை குறிப்பிட வேண்டும். அனுமதிக்கப்பட்டது ஒரு தூண்டுதலை உருவாக்குகிறது, இரண்டு அல்லது மூன்று கட்டளைகளுக்கும் பதிலளிப்பது.

ஒவ்வொரு வகையிலும் பல தூண்டுதல்களை உருவாக்க APPEND மூலம் உங்களை அனுமதிக்கிறது.

மணிக்கு ஒரு தூண்டுதலை உருவாக்குகிறதுபிரதி பொறிமுறைகள் மூலம் அட்டவணைகள் மாற்றியமைக்கப்படும் போது, ​​REPLICATION அல்ல என்ற வாதத்துடன், அது இயங்குவது தடைசெய்யப்பட்டுள்ளது.

AS sql_operator[...n] கட்டுமானமானது SQL அறிக்கைகள் மற்றும் கட்டளைகளின் தொகுப்பை வரையறுக்கிறது, அவை தூண்டுதல் தொடங்கப்படும் போது செயல்படுத்தப்படும்.

ஒரு தூண்டுதலின் உள்ளே பல செயல்பாடுகள் அனுமதிக்கப்படாது என்பதை நினைவில் கொள்ளவும்:

  • தரவுத்தளத்தை உருவாக்குதல், மாற்றுதல் மற்றும் நீக்குதல்;
  • மீட்பு காப்பு பிரதிதரவுத்தளம் அல்லது பரிவர்த்தனை பதிவு.

இந்த கட்டளைகள் இயக்க அனுமதிக்கப்படாது, ஏனெனில் தூண்டுதல் செயல்படுத்தப்பட்ட பரிவர்த்தனை மீண்டும் உருட்டப்பட்டால், அவற்றைத் திரும்பப் பெற முடியாது. இந்த தடையானது உருவாக்கப்பட்ட தூண்டுதல்களின் செயல்பாட்டை எந்த வகையிலும் பாதிக்க வாய்ப்பில்லை. உதாரணமாக, அட்டவணை வரிசையை மாற்றிய பின், பரிவர்த்தனை பதிவு காப்புப்பிரதியை மீட்டெடுக்க வேண்டிய சூழ்நிலையைக் கண்டறிவது கடினம்.

தூண்டுதல் நிரலாக்கம்

பதிவுகளைச் சேர்ப்பது, மாற்றுவது மற்றும் நீக்குவது போன்ற கட்டளைகளை இயக்கும்போது, ​​சேவையகம் இரண்டு சிறப்பு அட்டவணைகளை உருவாக்குகிறது: செருகப்பட்டதுமற்றும் நீக்கப்பட்டது. பரிவர்த்தனை முடிந்ததும் அவை செருகப்படும் அல்லது நீக்கப்படும் வரிசைகளின் பட்டியல்களைக் கொண்டிருக்கும். செருகப்பட்ட மற்றும் நீக்கப்பட்ட அட்டவணைகளின் அமைப்பு, தூண்டுதல் வரையறுக்கப்பட்ட அட்டவணைகளின் கட்டமைப்பிற்கு ஒத்ததாக இருக்கும். ஒவ்வொரு தூண்டுதலும் அதன் சொந்த செருகப்பட்ட மற்றும் நீக்கப்பட்ட அட்டவணைகளை உருவாக்குகிறது, எனவே வேறு எந்த தூண்டுதலும் அவற்றை அணுக முடியாது. தூண்டுதலைச் செயல்படுத்திய செயல்பாட்டின் வகையைப் பொறுத்து, செருகப்பட்ட மற்றும் நீக்கப்பட்ட அட்டவணைகளின் உள்ளடக்கங்கள் வேறுபட்டிருக்கலாம்:

  • INSERT கட்டளை - செருகப்பட்ட அட்டவணையில் பயனர் அட்டவணையில் செருக முயற்சிக்கும் அனைத்து வரிசைகளும் உள்ளன; நீக்கப்பட்ட அட்டவணையில் ஒரு வரிசை இருக்காது; தூண்டுதல் முடிந்ததும், செருகப்பட்ட அட்டவணையில் இருந்து அனைத்து வரிசைகளும் மூல அட்டவணைக்கு நகர்த்தப்படும்;
  • DELETE கட்டளை - நீக்கப்பட்ட அட்டவணையில் பயனர் நீக்க முயற்சிக்கும் அனைத்து வரிசைகளும் இருக்கும்; தூண்டுதல் ஒவ்வொரு வரிசையையும் சரிபார்த்து அதை நீக்க அனுமதிக்கப்படுமா என்பதை தீர்மானிக்க முடியும்; செருகப்பட்ட அட்டவணையில் வரிசைகள் இருக்காது;
  • UPDATE கட்டளை - செயல்படுத்தப்படும் போது, ​​நீக்கப்பட்ட அட்டவணையில் பழைய வரிசை மதிப்புகள் உள்ளன, அவை வெற்றிகரமாக முடிந்ததும் நீக்கப்படும்

கடைசியாக புதுப்பிக்கப்பட்டது: 11/09/2017

தூண்டுதல்கள் என்பது ஒரு சிறப்பு வகை சேமிக்கப்பட்ட செயல்முறையாகும், இது ஒரு அட்டவணை அல்லது பார்வையில் ஒரு குறிப்பிட்ட செயலைச் செய்யும்போது, ​​குறிப்பாக, தரவைச் சேர்க்கும்போது, ​​மாற்றும்போது அல்லது நீக்கும்போது, ​​அதாவது, INSERT, UPDATE, DELETE கட்டளைகளைச் செய்யும்போது தானாகவே அழைக்கப்படுகிறது.

தூண்டுதலின் முறையான வரையறை:

TRIGGER தூண்டுதல்_பெயரை இயக்கவும் (அட்டவணை_பெயர் | காட்சி_பெயர்) (பின் | அதற்கு பதிலாக) sql_expressions என

தூண்டுதலை உருவாக்க, CREATE TRIGGER அறிக்கையைத் தொடர்ந்து தூண்டுதல் பெயரைப் பயன்படுத்தவும். பொதுவாக, தூண்டுதல் பெயர் செயல்பாட்டின் வகை மற்றும் செயல்பாடு செய்யப்படும் அட்டவணையின் பெயரை பிரதிபலிக்கிறது.

ஒவ்வொரு தூண்டுதலும் ஒரு குறிப்பிட்ட அட்டவணை அல்லது பார்வையுடன் தொடர்புடையது, அதன் பெயர் ON என்ற வார்த்தைக்குப் பிறகு குறிக்கப்படுகிறது.

பின்னர் தூண்டுதல் வகை அமைக்கப்பட்டுள்ளது. நாம் இரண்டு வகைகளில் ஒன்றைப் பயன்படுத்தலாம்:

    பின்: செயல் முடிந்ததும் செயல்படுத்தப்படும். அட்டவணைகளுக்கு மட்டுமே வரையறுக்கப்பட்டுள்ளது.

    அதற்கு பதிலாக: ஒரு செயலுக்குப் பதிலாக செயல்படுத்தப்பட்டது (அதாவது, செயல் - சேர்த்தல், மாற்றுதல் அல்லது நீக்குதல் - செய்யவே இல்லை). அட்டவணைகள் மற்றும் காட்சிகளுக்கு வரையறுக்கப்பட்டுள்ளது

தூண்டுதல் வகைக்குப் பிறகு, தூண்டுதல் வரையறுக்கப்பட்ட செயல்பாட்டின் அறிகுறி வரும்: செருகு, புதுப்பித்தல் அல்லது நீக்குதல்.

பின் தூண்டுதலுக்கு, ஒரே நேரத்தில் பல செயல்களுக்கு இதைப் பயன்படுத்தலாம், எடுத்துக்காட்டாக, புதுப்பித்தல் மற்றும் செருகு. இந்த வழக்கில், செயல்பாடுகள் காற்புள்ளிகளால் பிரிக்கப்படுகின்றன. தூண்டுதலுக்குப் பதிலாக ஒரு செயலை மட்டுமே நீங்கள் வரையறுக்க முடியும்.

AS என்ற வார்த்தைக்குப் பிறகு SQL வெளிப்பாடுகளின் தொகுப்பு வருகிறது, இது உண்மையில் தூண்டுதலின் உடலை உருவாக்குகிறது.

ஒரு தூண்டுதலை உருவாக்குவோம். பின்வரும் வரையறையுடன் எங்களிடம் ஒரு தரவுத்தள தயாரிப்புகள் உள்ளது என்று வைத்துக்கொள்வோம்:

தரவுத்தளத்தை உருவாக்கு தயாரிப்புb; தயாரிப்புb ஐப் பயன்படுத்து; டேபிள் தயாரிப்புகளை உருவாக்கவும் (ஐடி ஐடி ஐடென்டிட்டி பிரைமரி கீ, தயாரிப்புப் பெயர் NVARCHAR(30) பூஜ்யமாக இல்லை, உற்பத்தியாளர் NVARCHAR(20) பூஜ்யமாக இல்லை, தயாரிப்புகளின் எண்ணிக்கை இயல்புநிலை 0, விலை பணம் பூஜ்யமில்லை);

தரவைச் சேர்க்கும்போதும் புதுப்பிக்கும்போதும் சுடும் தூண்டுதலை வரையறுப்போம்:

USE productdb; TRIGGER Products ஐ உருவாக்கவும்.

தயாரிப்புகள் அட்டவணை தயாரிப்புகளைப் பற்றிய தரவைச் சேமிக்கிறது என்று வைத்துக்கொள்வோம். ஆனால் ஒரு பொருளின் விலையில் மதிப்பு கூட்டப்பட்ட வரி, ஊழல் கூட்டு வரி மற்றும் பல போன்ற பல்வேறு கூடுதல் கட்டணங்கள் இருக்கும். தரவைச் சேர்ப்பவருக்கு வரி அடிப்படையுடன் இந்த நுணுக்கங்கள் அனைத்தும் தெரியாது, மேலும் அவர் நிகர விலையை நிர்ணயிக்கிறார். தூண்டுதலைப் பயன்படுத்தி, ஒரு பொருளின் விலையை ஒரு குறிப்பிட்ட அளவு மூலம் சரிசெய்யலாம்.

இந்த வழியில், தயாரிப்புகள் அட்டவணையில் உள்ள எந்த INSERT அல்லது UPDATE செயல்பாட்டிலும் தூண்டுதல் செயல்படும். தூண்டுதலே தயாரிப்பின் விலையை மாற்றும், மேலும் சேர்க்கப்பட்ட அல்லது மாற்றப்பட்ட தயாரிப்பைப் பெற, இந்த தயாரிப்பை ஐடி மூலம் கண்டுபிடிக்கிறோம். ஆனால் அத்தகைய பொருளின் ஐடிக்கு என்ன மதிப்பு இருக்க வேண்டும்? உண்மை என்னவென்றால், தரவைச் சேர்க்கும்போது அல்லது மாற்றும்போது, ​​​​அது செருகப்பட்ட இடைநிலை அட்டவணையில் சேமிக்கப்படுகிறது. இது தானாக உருவாக்கப்படுகிறது. அதிலிருந்து நாம் சேர்க்கப்பட்ட/மாற்றப்பட்ட தயாரிப்புகள் பற்றிய தரவைப் பெறலாம்.

தயாரிப்புகள் அட்டவணையில் ஒரு தயாரிப்பைச் சேர்த்த பிறகு, உண்மையில் தயாரிப்பு சேர்க்கப்படும்போது நிர்ணயிக்கப்பட்ட விலையை விட சற்று அதிகமாக இருக்கும்:

ஒரு தூண்டுதலை நீக்குகிறது

தூண்டுதலை அகற்ற, நீங்கள் DROP TRIGGER கட்டளையைப் பயன்படுத்த வேண்டும்:

டிராப் TRIGGER தயாரிப்புகள்_INSERT_UPDATE

தூண்டுதலை முடக்குகிறது

தூண்டுதலை இடைநிறுத்த விரும்புகிறோம், ஆனால் அதை முழுவதுமாக அகற்ற விரும்பவில்லை. இந்த வழக்கில், DISABLE TRIGGER கட்டளையைப் பயன்படுத்தி அதை தற்காலிகமாக முடக்கலாம்:

தயாரிப்புகளில் TRIGGER தயாரிப்புகளை முடக்கு_INSERT_UPDATE

உங்களுக்கு ஒரு தூண்டுதல் தேவைப்படும்போது, ​​ENABLE TRIGGER கட்டளையைப் பயன்படுத்தி அதை இயக்கலாம்:

தயாரிப்புகளில் TRIGGER தயாரிப்புகளை இயக்கு_INSERT_UPDATE

தூண்டுதல்ஒரு தரவுத்தள செயல்முறையைப் போன்ற ஒரு சப்ரூட்டீன், ஒரு அட்டவணையில் பதிவை மாற்றும்போது, ​​நீக்கும்போது அல்லது சேர்க்கும்போது தானாகவே DBMS ஆல் அழைக்கப்படுகிறது. ஒரு நிரலிலிருந்து தூண்டுதல்களை அணுகவோ, அவற்றிற்கு அளவுருக்களை அனுப்பவோ அல்லது அவற்றிலிருந்து முடிவுகளைப் பெறவோ முடியாது. பெரும்பாலும், தரவுத்தளத்தில் குறிப்பு ஒருமைப்பாடு மற்றும் அடுக்கு செயல்பாடுகளை பராமரிக்க தூண்டுதல்கள் பயன்படுத்தப்படுகின்றன. குறிப்பு விவரக்குறிப்புகள், அடுக்கை நீக்குதல் மற்றும் புதுப்பித்தல் செயல்களை வரையறுக்கின்றன மற்றும் அட்டவணைகள் அறிவிக்கப்படும் போது உருவாக்கப்படும், தூண்டுதல்கள் மூலமாகவும் செயல்படுத்தப்படுகிறது, ஆனால் இந்த தூண்டுதல்களின் உரையை திருத்த முடியாது.

தூண்டுதல் நோக்கம்

மாற்றங்களைத் தடுக்கவும் (உதாரணமாக, இன்வாய்ஸ்கள் அனுப்பப்பட்ட பிறகு மாற்றப்படுவதைத் தடுக்கவும்).
. பதிவு மாற்றங்கள் (உதாரணமாக, பழைய தரவின் நகல்களை வைத்திருத்தல்).
. தணிக்கை மாற்றங்கள் (எடுத்துக்காட்டாக, மாற்றங்களில் ஈடுபட்டுள்ள பயனர்கள் மற்றும் பாத்திரங்களின் பதிவை வைத்திருங்கள்).
. மாற்றங்களைப் படமெடுக்கவும் (உதாரணமாக, அனைத்து மாற்றங்களும் சேவையகத்தின் கடிகாரத்தின்படி தேதியிடப்பட்டிருப்பதை உறுதிசெய்யவும், கிளையண்ட் அல்ல).
. வணிக விதிகளை செயல்படுத்துதல்.
. தரவு நகலெடுத்தல் (உதாரணமாக, பிற்கால பதிப்பில் மற்றொரு தரவுத்தளத்திற்கு அனுப்பப்படும் அனைத்து மாற்றங்களின் பதிவையும் சேமிக்கவும்).
. அதிகரித்த உற்பத்தித்திறன் (உதாரணமாக, வினவல்களை விரைவுபடுத்த, ஒவ்வொரு பரிவர்த்தனை விவரத்திற்குப் பிறகும் இருப்பைப் புதுப்பித்தல்).

தூண்டுதல்களை அறிவிக்கிறது

தூண்டுதலை உருவாக்கவும் {முன்|பிறகு} {நீக்கு|செருகு|புதுப்பி [OF ]} ஆன் குறிப்பு {பழையது {[வரிசை]|மேசை [AS] } புதியது {வரிசை|மேசை} [AS] }] [ஒவ்வொரு {அறிக்கை|வரிசை [எப்பொழுது ]}]
[அணுவைத் தொடங்கு]

[முடிவு]

முக்கிய வார்த்தைகள்

. முன்|பிறகு– தூண்டுதல் தொடக்க நேரம் – முன் | புதுப்பிப்பு செயல்பாட்டிற்குப் பிறகு.
. நீக்கு|செருகு|புதுப்பி= தூண்டுதல் நிகழ்வு.
. ஒவ்வொரு வரிசைக்கும்- ஒவ்வொரு வரிக்கும் (வரி தூண்டுதல், பின்னர் எப்போது).
. ஒவ்வொரு அறிக்கைக்கும்- முழு அணிக்கும் (இயல்புநிலையாக செல்லுபடியாகும்).
. குறிப்பு– பழைய மற்றும் | என்பதற்கு 4 மாற்றுப்பெயர்கள் வரை ஒதுக்க உங்களை அனுமதிக்கிறது அல்லது புதிய வரிகள் மற்றும் | அல்லது தூண்டுதல்களால் அணுகக்கூடிய அட்டவணைகள்.

தடைகளைத் தூண்டவும்

தூண்டுதல் உடலில் பின்வரும் அறிக்கைகள் இருக்க முடியாது:
. தரவுத்தள பொருள்களை வரையறுத்தல், நீக்குதல் மற்றும் மாற்றுதல் (அட்டவணைகள், டொமைன்கள் போன்றவை)
. பரிவர்த்தனை செயலாக்கம் (COMMIT, ROLLBACK)
. தரவுத்தளத்திற்கான இணைப்புகள் மற்றும் துண்டிப்புகள் (இணைக்கவும், துண்டிக்கவும்)

பயன்பாட்டின் அம்சங்கள்
. மற்ற அனைத்து (அறிவிப்பு) ஒருமைப்பாடு சோதனைகள் பயன்படுத்தப்பட்ட பிறகு தூண்டுதல் செயல்படுத்தப்படுகிறது மற்றும் சோதனை அளவுகோல் மிகவும் சிக்கலானதாக இருக்கும்போது பயனுள்ளதாக இருக்கும். அறிவிப்புச் சரிபார்ப்புகள் புதுப்பிப்பு செயல்பாட்டை நிராகரித்தால், தூண்டுதல்கள் செயல்படுத்தப்படாது. தூண்டுதல் ஒரு பரிவர்த்தனையின் சூழலில் செயல்படுகிறது, ஆனால் FK கட்டுப்பாடு செயல்படாது.
. ஒரு தூண்டுதல் அதன் அடிப்படை அட்டவணையில் கூடுதல் மாற்றத்தை ஏற்படுத்தினால், பெரும்பாலும் இது அதன் சுழல்நிலை செயல்பாட்டிற்கு வழிவகுக்காது, ஆனால் இது தெளிவுபடுத்தப்பட வேண்டும். SQL Server 2005 ஆனது OPTION (MAXRECURSIV 3) முக்கிய சொல்லைப் பயன்படுத்தி 255 நிலைகள் வரை மறுநிகழ்வைக் குறிப்பிடும் திறனை வழங்குகிறது.
. பெரிய பைனரி நெடுவரிசைகளை (BLOBs) செயலாக்கும்போது தூண்டுதல்கள் பொதுவாக செயல்படுத்தப்படுவதில்லை.
. தரவு புதுப்பிக்கப்படும் போதெல்லாம், டிபிஎம்எஸ் தானாகவே தூண்டுதல் என்று அழைக்கப்படும் என்பதை நினைவில் கொள்ள வேண்டும் மெய்நிகர் அட்டவணைகள், இது வெவ்வேறு DBMS களில் வெவ்வேறு பெயர்களைக் கொண்டுள்ளது. இன்டர்பேஸ் மற்றும் ஆரக்கிளில் - இவை புதியவை மற்றும் பழையவை. SQL சேவையகத்தில் - செருகப்பட்டு நீக்கப்பட்டது. மேலும், தரவு மாறும்போது, ​​இரண்டும் உருவாக்கப்படும். இந்த அட்டவணைகள் அதே எண்ணிக்கையிலான நெடுவரிசைகளைக் கொண்டுள்ளன, அதே பெயர்கள் மற்றும் டொமைன்கள் அட்டவணை புதுப்பிக்கப்படும். SQL Server 2005 DBMS ஆனது, OUTPUT Inserted.ID,... INTO @ முக்கிய சொல்லைப் பயன்படுத்தி தரவு செருகப்பட வேண்டிய ஒரு தற்காலிக அட்டவணை உட்பட அட்டவணையைக் குறிப்பிடும் திறனை வழங்குகிறது.
. பல டிபிஎம்எஸ்களில், ஒரே நேரத்தில் பல செயல்களுக்கான தூண்டுதல்களை அறிவிக்க அனுமதிக்கப்படுகிறது. பல்வேறு செயல்களுக்கு வெவ்வேறு எதிர்விளைவுகளைச் செயல்படுத்த, Oracle ஆனது நீக்குதல், செருகுதல், புதுப்பித்தல் போன்ற முன்னறிவிப்புகளை வழங்குகிறது, இது தொடர்புடைய வகை புதுப்பிப்புகளுக்கு உண்மை என்று வழங்குகிறது.
. ஆரக்கிள் டிபிஎம்எஸ்ஸில், புதுப்பிப்பு தூண்டுதல்களுக்கான நெடுவரிசைகளின் பட்டியலை (புதுப்பித்தலுக்குப் பிறகு) குறிப்பிடலாம், இது இந்த நெடுவரிசைகளின் மதிப்புகள் மாறும்போது மட்டுமே தூண்டுதல் அழைக்கப்படுவதை உறுதி செய்யும்.
. ஒவ்வொரு தூண்டுதல் நிகழ்வுக்கும் பல தூண்டுதல்களை அறிவிக்கலாம் (ஆரக்கிள் ஒரு அட்டவணையில் 12 தூண்டுதல்களைக் கொண்டுள்ளது) மேலும் பொதுவாக அவை உருவாக்கப்படும் வரிசையால் அவை சுடப்படும் வரிசை தீர்மானிக்கப்படுகிறது. InterBase போன்ற சில DBMSகளில், கூடுதல் POSITION முக்கிய சொல்லைப் பயன்படுத்தி தொடக்க வரிசை குறிப்பிடப்படுகிறது. பொதுவாக, தூண்டுதல்கள் முதலில் ஒவ்வொரு கட்டளைக்கும், பின்னர் ஒவ்வொரு வரிக்கும் செயல்படுத்தப்பட வேண்டும்.
. தூண்டுதல்களை ஒருவருக்கொருவர் உட்பொதிக்க முடியும். எனவே, SQL சேவையகம் 32 கூடு நிலைகளை அனுமதிக்கிறது (நீங்கள் @@NextLevel குளோபல் மாறியைப் பயன்படுத்தி கூடு கட்டும் நிலையைத் தீர்மானிக்கலாம்).

தூண்டுதல்களின் தீமைகள்

சிக்கலானது. தரவுத்தளத்தில் சில செயல்களை தரவுத்தளத்தில் வைப்பது அதன் வடிவமைப்பு, செயல்படுத்தல் மற்றும் நிர்வாகத்தை சிக்கலாக்குகிறது.
. திருட்டு செயல்பாடுபயனரிடமிருந்து. சில அம்சங்கள் மறைக்கப்படும் போது ஒரு பயன்பாட்டை நவீனமயமாக்குவது கடினம்.
. செயல்திறனில் தாக்கம். சிறிய எண்ணிக்கையிலான தூண்டுதல்களுடன், தரவு செயலாக்க நேரம் அதிகரிக்கிறது.

தூண்டுதல்களைத் திருத்துதல் மற்றும் நீக்குதல்

தூண்டுதலை அகற்ற, DROP TRIGGER அறிக்கையைப் பயன்படுத்தவும்
. தூண்டுதலை மாற்ற, ALTER TRIGGER... அறிக்கையைப் பயன்படுத்தவும்.
. தூண்டுதல்களை முடக்குகிறது
சில சந்தர்ப்பங்களில், எடுத்துக்காட்டாக, தொகுதி ஏற்றும் போது, ​​தூண்டுதல்களை முடக்க வேண்டும். பல DBMSகள் தொடர்புடைய திறன்களை வழங்குகின்றன. ஆரக்கிள் மற்றும் SQL சர்வரில், முக்கிய வார்த்தைகள் முடக்கப்படும்

தொழில்துறை சேவையகங்களின் அம்சங்கள்

1) இன்டர்பேஸ்/ஃபயர்பேர்ட்

தூண்டுதலை உருவாக்கவும் FOR {செயலில்|செயலற்ற} {முன்|பிறகு} {செருகு|நீக்கு|புதுப்பிப்பு} [நிலை ]
AS [டிக்ளேர் மாறி [()]]
ஆரம்பம்

முடிவு

உதாரணமாக:

வாடிக்கையாளருக்கு TRIGGER BF_Del_Cust ஐ உருவாக்கவும்
நிலை 1 ஐ நீக்குவதற்கு முன் செயலில் உள்ளது
ஆரம்பம்
ஆர்டர்கள் இருக்கும் இடத்திலிருந்து நீக்கவும்.CNum=Customer.CNum;
முடிவு;

2) SQL சர்வர்

தூண்டுதலை உருவாக்கவும் ஆன் [குறியாக்கத்துடன்] {அதற்கு|பிறகு|இதற்கு பதிலாக} {செருகு|புதுப்பிப்பு|நீக்கு}
AS

B1 பயன்படுத்தவும்;
போ
செருகி, புதுப்பித்த பிறகு வாடிக்கையாளருக்கு TRIGGER InUpCust1 ஐ உருவாக்கவும்
AS RAISEERROR('வாடிக்கையாளர் அட்டவணை மாற்றப்பட்டது');

தூண்டுதல்களின் கூடுதல் வகைகள்

ஆரக்கிள் மற்றும் SQL சேவையகம் புதுப்பிக்கப்படாத காட்சிகளுக்கான (மாற்று) தூண்டுதல்களை உருவாக்கும் திறனை வழங்குகிறது. இதற்கு பதிலாக, முக்கிய வார்த்தைகள் வழங்கப்பட்டுள்ளன:

இவ்வாறு செருகுவதற்குப் பதிலாக தூண்டுதலை உருவாக்கவும்…

பார்வைகளைப் பயன்படுத்தி தரவைப் புதுப்பிப்பதற்கான கிளையன்ட் முயற்சிகளை நீங்கள் கண்காணிக்கலாம் மற்றும் எந்தச் செயல்களையும் செய்யலாம், புதுப்பிக்கப்படாத பார்வைகளைக் கையாளலாம்.
. SQL சர்வர் DBMS ஆனது திரும்பப் பெறுவதற்கான தூண்டுதலை வழங்குகிறது, அது உண்மையில் அனைத்து செயல்களையும் நிறுத்தி ஒரு செய்தியை வெளியிடுகிறது:

பின்னடைவு தூண்டுதல்

"தரவுத்தளங்கள்" பற்றிய விரிவுரை குறிப்புகள்

தலைப்பு: செயல்முறைகள் மற்றும் தூண்டுதல்கள்

(உதாரணமாக MS SQL சேவையகத்தைப் பயன்படுத்துதல்)

தொகுப்பாளர்: எல்.வி. ஷெகோலேவா

PetrSU, பயன்பாட்டு கணிதம் மற்றும் சைபர்நெட்டிக்ஸ் துறை

அறிமுகம்........................................... ....................................................... ............ ......

தரவுத்தள கட்டமைப்பின் விளக்கம்............................................. ............ ..............

செயல்முறையின் கருத்து ............................................. ....................................................

நடைமுறைகளுடன் பணிபுரிவதற்கான கட்டளைகள்............................................. ...................... .............

ஒரு தூண்டுதலின் கருத்து ............................................. ......................................................

தூண்டுதல்களுடன் வேலை செய்வதற்கான கட்டளைகள்............................................. .................... ....................

தூண்டுதல் செயலாக்கங்களின் எடுத்துக்காட்டுகள் .............................................. ..... ...............

எடுத்துக்காட்டு 1................................................ ..............................................

எடுத்துக்காட்டு 2................................................ ..............................................

எடுத்துக்காட்டு 3................................................ ..............................................

எடுத்துக்காட்டு 4................................................ ..............................................

எடுத்துக்காட்டு 5................................................ ..............................................

PetrSU, பயன்பாட்டு கணிதம் மற்றும் சைபர்நெட்டிக்ஸ் துறை

அறிமுகம்

IN இந்த கையேடு செயல்முறைகள் மற்றும் தூண்டுதல்களை உருவாக்குவதற்கான கட்டளைகளின் எடுத்துக்காட்டுகளை வழங்குகிறது

உடன் அவர்களின் வேலை விளக்கம்.

அனைத்து கட்டளைகளும் MS SQL சர்வர் தொடரியலில் எழுதப்பட்டுள்ளன.

ஒரு தரவுத்தளத்திற்கான எடுத்துக்காட்டுகள் கொடுக்கப்பட்டுள்ளன, அதன் கட்டமைப்பு விவரிக்கப்பட்டுள்ளது

பகுதி 1.

PetrSU, பயன்பாட்டு கணிதம் மற்றும் சைபர்நெட்டிக்ஸ் துறை

1 தரவுத்தள கட்டமைப்பின் விளக்கம்

tblFaculty அட்டவணையில் பல்கலைக்கழகத்தின் பீடங்கள் பற்றிய தகவல்கள் உள்ளன.

பெயர்

விளக்கம்

பண்பு

ஆசிரிய ஐடி

ஆசிரியர் பெயர்

பீடாதிபதியின் முழு பெயர்

டீனின் அலுவலக எண்

டீனின் அலுவலக தொலைபேசி எண்

ஆசிரிய மாணவர்களின் எண்ணிக்கை

tblStudent அட்டவணையில் ஒரு கல்வியாண்டில் பல்கலைக்கழக மாணவர்கள் பற்றிய தகவல்கள் உள்ளன.

பண்பு பெயர்

விளக்கம்

மாணவர் அடையாளம்

மாணவரின் பெயர்

உதவித்தொகை

tblGroup அட்டவணையில் ஒரு கல்வியாண்டில் பல்கலைக்கழக மாணவர் குழுக்கள் பற்றிய தகவல்கள் உள்ளன.

பண்பு பெயர்

விளக்கம்

குழு ஐடி

தலைவன்

குழு எண்

ஆசிரியர்

tblSubject அட்டவணையில் ஒரு கல்வியாண்டில் ஆசிரிய மாணவர்கள் படித்த துறைகள் பற்றிய தகவல்கள் உள்ளன.

பண்பு பெயர்

விளக்கம்

பொருள் ஐடி

பொருளின் பெயர்

விரிவுரைகளின் மணிநேர எண்ணிக்கை

பயிற்சி நேரங்களின் எண்ணிக்கை

ஆசிரியர்

"தரவுத்தளங்கள்" (செயல்முறைகள் மற்றும் தூண்டுதல்கள்) பற்றிய விரிவுரை குறிப்புகள்

PetrSU, பயன்பாட்டு கணிதம் மற்றும் சைபர்நெட்டிக்ஸ் துறை

tblRoom அட்டவணையில் பல்கலைக்கழக வகுப்பறைகள் பற்றிய தகவல்கள் உள்ளன.

tblSchedule அட்டவணையில் மாணவர் குழுக்களின் அட்டவணை பற்றிய தகவல்கள் உள்ளன.

பண்பு பெயர்

விளக்கம்

அடையாளங்காட்டி

பார்வையாளர்கள்

வாரம் ஒரு நாள்

ஆசிரியரின் முழு பெயர்

PetrSU, பயன்பாட்டு கணிதம் மற்றும் சைபர்நெட்டிக்ஸ் துறை

2 செயல்முறையின் கருத்து

ஒரு செயல்முறை என்பது DBMS இன் உள் மொழியில் எழுதப்பட்ட ஒரு நிரலாகும், இது தரவுத்தளத்தில் ஒரு சுயாதீன பொருளாக சேமிக்கப்படுகிறது. இத்தகைய நடைமுறைகள் பொதுவாக சேமிக்கப்பட்ட, இணைக்கப்பட்ட நடைமுறைகள் என்று அழைக்கப்படுகின்றன. நடைமுறைகளை ஒரு பயன்பாட்டு நிரல் மூலம் அழைக்கலாம். செயல்முறைகள் தரவுத்தள சேவையகத்தில் செயல்படுத்தப்படுகின்றன. செயல்முறைகள் அளவுருக்கள் மற்றும் பிழை செய்திகள் உட்பட மதிப்புகளை திரும்பப் பெறலாம்.

நடைமுறைகளைப் பயன்படுத்துவதன் நன்மைகள்:

மையப்படுத்தப்பட்ட தரவு அணுகல் கட்டுப்பாடு;

பயன்பாட்டு நிரல்கள் ஒரு செயல்முறையை அழைக்கலாம், இது ஒரு செயல்முறையை மாற்றியமைக்கும் போது, ​​​​அதை அழைக்கும் அனைத்து நிரல்களும் புதிய குறியீடு, குறியீடு தேர்வுமுறை ஆகியவற்றைப் பெறும்;

கணினிகளில் நெட்வொர்க் போக்குவரத்தை குறைக்கிறது"கிளையண்ட்-சர்வர்" தரவு பரிமாற்றத்திற்குப் பதிலாக செயல்முறையின் பெயரையும் அதன் அளவுருக்களையும் மட்டும் அனுப்புவதன் மூலம், செயல்முறை சேவையகத்தில் செயல்படுத்தப்படுகிறது;

பயனரிடமிருந்து பல அம்சங்களை மறைக்கிறது குறிப்பிட்ட சாதனம்தரவுத்தளங்கள், இது அதிக தரவு சுதந்திரத்தை உறுதி செய்கிறது;

அதிக தரவு பாதுகாப்பு, பயனர் அழைக்க உரிமை இருக்கலாம்

செயல்முறை, ஆனால் இந்த செயல்முறையால் அழைக்கப்படும் தரவை கையாளாது; குறைபாடு: நடைமுறைகளை செயல்படுத்துவதில் தரநிலைகள் இல்லாதது.

PetrSU, பயன்பாட்டு கணிதம் மற்றும் சைபர்நெட்டிக்ஸ் துறை

MS SQL சேவையகத்தில் நடைமுறைகளுடன் பணிபுரிவதற்கான 3 கட்டளைகள்

ஒரு நடைமுறையை உருவாக்குதல்

செயல்முறையை உருவாக்கவும்<имя процедуры>

[@<имя параметра> <тип данных> , ...]

ஆரம்பம்

<операторы>

MS SQL சேவையகத்தில் உள்ள அனைத்து மாறிகளின் பெயர்களும் குறியீட்டுடன் தொடங்க வேண்டும்

ஒரு செயல்முறையை அழைக்கிறது

செயல்படுத்த<имя процедуры> [{@<имя переменной> | <значение параметра>}, ...]

ஒரு செயல்முறையை நீக்குதல்

டிராப் செயல்முறை<имя процедуры>

@id நடைமுறையின் உள்ளீட்டு அளவுருவின் அடையாளங்காட்டியான டிபார்ட்மெண்டில் பதிவுசெய்யப்பட்ட மாணவர்களின் எண்ணிக்கையை இந்த செயல்முறை கணக்கிடுகிறது மற்றும் இந்த மதிப்பை @total_sum அளவுருவில் வழங்குகிறது.

செயல்முறை prStudentsOfFaculty @id int, @total_sum int வெளியீடு AS உருவாக்கவும்

@total_sum = 0 என அமைக்கவும்

@total_sum = (tblStudent, tblGroup இலிருந்து தேர்ந்தெடு எண்ணிக்கை(*) எங்கு (tblStudent.GroupId = tblGroup.GroupId) மற்றும் (tblGroup.FacultyId = @id)) முடிவு

PetrSU, பயன்பாட்டு கணிதம் மற்றும் சைபர்நெட்டிக்ஸ் துறை

4 தூண்டுதலின் கருத்து

ஒரு தூண்டுதல் (விதி) அட்டவணையில் இணைக்கப்பட்டுள்ளது மற்றும் டேபிளில் மேம்படுத்தல் செயல்பாடுகள் (டேபிள் பதிவுகளைச் சேர்த்தல், நீக்குதல், மாற்றுதல்) செய்யும்போது தரவுத்தள மேலாண்மை அமைப்பால் தானாகவே அழைக்கப்படுகிறது.

MS SQL சேவையகத்தில் தூண்டுதல்களை செயல்படுத்தும் அம்சங்கள்

MS SQL சர்வரில்:

ஒரு அறுவை சிகிச்சை செய்த பிறகு அல்லது ஒரு அறுவை சிகிச்சைக்கு பதிலாக ஒரு தூண்டுதலை அழைக்கலாம்;

செயல்பாட்டைச் செய்ய வேண்டிய அனைத்து அட்டவணைப் பதிவுகளுக்கும் தூண்டுதல் ஒரு முறை அழைக்கப்படுகிறது;

எனவே, மாற்றியமைக்கப்பட்ட பதிவுகள் இரண்டு அட்டவணைகளில் சேமிக்கப்படும், அவை தூண்டுதல் அழைக்கப்படும் போது தானாகவே உருவாக்கப்படும்:

o செருகப்பட்ட அட்டவணை - மாற்றப்பட்ட அல்லது சேர்க்கப்பட்ட அட்டவணைப் பதிவுகளைக் கொண்டுள்ளது;

o நீக்கப்பட்ட அட்டவணை - மாற்றங்கள் செய்யப்படுவதற்கு முன் பதிவுகள் அல்லது அட்டவணை பதிவுகள் நீக்கப்பட்டது;

செருகும் செயல்பாட்டிற்காக வரையறுக்கப்பட்ட தூண்டுதலின் உடலில், அட்டவணை மட்டுமே கிடைக்கும்

நீக்குதல் செயல்பாட்டிற்கு வரையறுக்கப்பட்ட தூண்டுதலின் உடலில், அட்டவணை மட்டுமே உள்ளது

புதுப்பிப்பு செயல்பாட்டிற்காக வரையறுக்கப்பட்ட தூண்டுதலின் உடலில், இரண்டு அட்டவணைகளும் கிடைக்கின்றன

செருகப்பட்டது மற்றும் நீக்கப்பட்டது;

ஒரே நிகழ்விற்கு எத்தனை தூண்டுதல்களை உருவாக்கலாம், மேலும் அவை சீரற்ற வரிசையில் (ஒருவேளை அவை உருவாக்கப்பட்ட வரிசையில்) அழைக்கப்படுகின்றன.

PetrSU, பயன்பாட்டு கணிதம் மற்றும் சைபர்நெட்டிக்ஸ் துறை

தூண்டுதல்களுடன் வேலை செய்வதற்கான 5 கட்டளைகள்

உருவாக்கம்

தூண்டுதலை உருவாக்கவும்<имя триггера>ஆன்<имя таблицы>

(இதற்கு | பிறகு | பதிலாக)

[செருகு] [,] [புதுப்பிப்பு] [,] [நீக்கு] என

அறிவிக்கவும் @<имя переменной> <тип данных>, ...

ஆரம்பம்<операторы>

அகற்றுதல்

தூண்டி விடவும்<имя триггера>

PetrSU, பயன்பாட்டு கணிதம் மற்றும் சைபர்நெட்டிக்ஸ் துறை

6 தூண்டுதல் செயலாக்கங்களின் எடுத்துக்காட்டுகள்

பொருள் பகுதி வரம்பு:ஒரு மாணவரின் உதவித்தொகையை முந்தைய உதவித்தொகையில் 5%க்கு மேல் அதிகரிக்க முடியாது.

TRIGGER tgrStudentGrantUpdate ஐ உருவாக்கவும்

புதுப்பித்த பிறகு tbl மாணவர்

அறிவிக்கவும் @Grant_old float, @Grant_new float, @Id int;

நீக்கப்பட்டதில் இருந்து @Grant_old = Grant என்பதைத் தேர்ந்தெடுக்கவும்

செருகப்பட்டதில் இருந்து @Grant_new = Grant, @Id = StudentId என்பதைத் தேர்ந்தெடுக்கவும்

IF (@Grant_new - @Grant_old > 0.05 * @Grant_old)

புதுப்பி tblStudent SET Grant = 1.05 * @Grant_old

எங்கே மாணவர் ஐடி = @ ஐடி

tblStudent அட்டவணைக்காக tgrStudentGrantUpdate தூண்டுதல் உருவாக்கப்பட்டது. தரவு மாற்ற செயல்பாடு முடிந்ததும் தூண்டுதல் சுடும்.

IN தூண்டுதல் மூன்று உள்ளூர் மாறிகளை வரையறுக்கிறது: பழைய மாணவர் உதவித்தொகையை சேமிக்க @Grant_old (உண்மையான வகை), புதிய மாணவர் உதவித்தொகையை சேமிக்க @Grant_new (உண்மையான வகை), மாணவர் அடையாளங்காட்டியை சேமிக்க @Id (முழு எண் வகை).

ஒரு தூண்டுதல் அழைக்கப்படும் போது, ​​DBMS இரண்டு அட்டவணைகளை உருவாக்குகிறது: நீக்கப்பட்டது, மாற்றியமைக்கப்படுவதற்கு முன்பு மாற்றியமைக்கப்பட்ட பதிவுகளைக் கொண்டிருக்கும், மற்றும் செருகப்பட்ட, மாற்றியமைக்கப்பட்ட பிறகு மாற்றியமைக்கப்பட்ட பதிவுகளைக் கொண்டிருக்கும்.

IN தூண்டுதலின் உடலில், முதலில், மாணவர்களின் உதவித்தொகையின் மதிப்பு நீக்கப்பட்ட அட்டவணையில் இருந்து பெறப்படுகிறது, அதாவது, பழைய உதவித்தொகை பின்னர் செருகப்பட்ட அட்டவணையில் இருந்து பெறப்படுகிறது; மாற்றங்கள் செய்யப்படுகின்றன, அதாவது, புதிய உதவித்தொகை. செருகப்பட்ட அட்டவணையில் இருந்து புதிய உதவித்தொகையைப் பெறுவதுடன், மாணவர் அடையாளங்காட்டியும் மீட்டெடுக்கப்படுகிறது. நீக்கப்பட்ட அட்டவணையில் இருந்து மாணவர் ஐடியை எளிதாகப் பெறலாம்.

அடுத்து, தூண்டுதலின் உடலில், உதவித்தொகையின் மாற்றத்தின் அளவு பற்றிய நிபந்தனை சரிபார்க்கப்படுகிறது. உதவித்தொகை 5% க்கும் அதிகமாக மாறியிருந்தால், தூண்டுதல் தரவை சரிசெய்கிறது - இது மாணவரின் முந்தைய உதவித்தொகை மதிப்புடன் ஒப்பிடும்போது உதவித்தொகையை 5% மட்டுமே அதிகரிக்கிறது. தொடர்புடைய மாணவருக்கு tblStudent அட்டவணையில் புதுப்பிப்பு செயல்பாட்டை அழைப்பதன் மூலம் இந்த செயல் செய்யப்படுகிறது.

ஒரு தூண்டுதலின் வரையறை, அதன் பயன்பாட்டின் நோக்கம், தரவு ஒருமைப்பாட்டை உறுதி செய்வதில் தூண்டுதலின் இடம் மற்றும் பங்கு ஆகியவை கொடுக்கப்பட்டுள்ளன. தூண்டுதல்களின் வகைகள் விவரிக்கப்பட்டுள்ளன. தூண்டுதலை உருவாக்க, மாற்ற மற்றும் நீக்குவதற்கான ஆபரேட்டர்கள் கருதப்படுகிறார்கள். ஒருமைப்பாடு கட்டுப்பாடுகளைச் செயல்படுத்துவதற்கும் புள்ளிவிவரத் தரவைச் சேகரிப்பதற்கும் தூண்டுதல்களை உருவாக்கும் எடுத்துக்காட்டுகளுடன் தூண்டுதல் நிரலாக்கம் விளக்கப்பட்டுள்ளது.

SQL மொழி தரநிலையில் தூண்டுதல் வரையறை

தூண்டுதல்கள் ஒரு வகையான சேமிக்கப்பட்ட செயல்முறை ஆகும். டேட்டா மேனிபுலேஷன் லாங்குவேஜ் (டிஎம்எல்) ஆபரேட்டர் டேபிளில் செயல்படுத்தப்படும் போது அவை செயல்படுத்தப்படும். தரவு ஒருமைப்பாட்டைச் சரிபார்க்கவும், பரிவர்த்தனைகளைத் திரும்பப் பெறவும் தூண்டுதல்கள் பயன்படுத்தப்படுகின்றன.

ஒரு தூண்டுதல் என்பது ஒரு தொகுக்கப்பட்ட SQL செயல்முறையாகும், இதன் செயல்பாடானது சில நிகழ்வுகளின் நிகழ்வுகளால் கட்டுப்படுத்தப்படுகிறது. தொடர்புடைய அடிப்படைதகவல்கள். தூண்டுதல்களின் பயன்பாடு, பெரும்பாலும், தரவுத்தள பயனர்களுக்கு மிகவும் வசதியானது. இருப்பினும், அவற்றின் பயன்பாடு பெரும்பாலும் I/O செயல்பாடுகளுக்கான கூடுதல் ஆதார செலவுகளை உள்ளடக்கியது. சேமிக்கப்பட்ட நடைமுறைகள் அல்லது பயன்பாட்டு நிரல்களைப் பயன்படுத்தி அதே முடிவுகளை (மிகக் குறைவான மேல்நிலையுடன்) அடைய முடியும் போது, ​​தூண்டுதல்களைப் பயன்படுத்துவது நடைமுறையில் இல்லை.

தூண்டுதல்கள் என்பது ஒரு தரவுத்தளத்தில் தரவின் ஒருமைப்பாட்டை பராமரிக்க பயன்படும் ஒரு சிறப்பு SQL சர்வர் கருவியாகும். ஒருமைப்பாடு கட்டுப்பாடுகள், விதிகள் மற்றும் இயல்புநிலைகள் எப்போதும் விரும்பிய அளவிலான செயல்பாட்டை அடைய முடியாது. அவற்றின் நம்பகத்தன்மை மற்றும் யதார்த்தத்தை உறுதிப்படுத்த சிக்கலான தரவு சரிபார்ப்பு வழிமுறைகளை செயல்படுத்துவது பெரும்பாலும் அவசியம். கூடுதலாக, சில நேரங்களில் அட்டவணை மதிப்புகளில் ஏற்படும் மாற்றங்களை நீங்கள் கண்காணிக்க வேண்டும், இதனால் தொடர்புடைய தரவு தேவைக்கேற்ப மாற்றப்படும். விதிகள், நிலையான மதிப்புகள் போன்றவற்றுக்கு இணங்க அனைத்து செயல்பாடுகளும் முடிந்தபின் நடைமுறைக்கு வரும் ஒரு வகையான வடிப்பான்களாக தூண்டுதல்கள் கருதப்படலாம்.

தூண்டுதல் என்பது ஒரு சிறப்பு வகை சேமிக்கப்பட்ட செயல்முறையாகும், இது தூண்டுதல்கள் தொடர்புடைய அட்டவணையில் தரவை மாற்ற முயற்சிக்கும்போது சேவையகத்தால் தானாகவே தொடங்கப்படும். ஒவ்வொரு தூண்டுதலும் ஒரு குறிப்பிட்ட அட்டவணையுடன் தொடர்புடையது. இது செய்யும் அனைத்து தரவு மாற்றங்களும் ஒரு பரிவர்த்தனையாக கருதப்படும். பிழை அல்லது தரவு ஒருமைப்பாடு மீறல் கண்டறியப்பட்டால், பரிவர்த்தனை திரும்பப் பெறப்படும். எனவே மாற்றங்கள் தடைசெய்யப்பட்டுள்ளன. தூண்டுதலால் ஏற்கனவே செய்யப்பட்ட அனைத்து மாற்றங்களும் செயல்தவிர்க்கப்படும்.

தரவுத்தள உரிமையாளர் மட்டுமே தூண்டுதலை உருவாக்க முடியும். இந்த கட்டுப்பாடு அட்டவணைகளின் கட்டமைப்பில் தற்செயலான மாற்றங்களைத் தவிர்க்க உங்களை அனுமதிக்கிறது, மற்ற பொருட்களை அவற்றுடன் இணைக்கும் வழிகள் போன்றவை.

தூண்டுதல் மிகவும் பயனுள்ள மற்றும் அதே நேரத்தில் ஆபத்தான கருவியாகும். எனவே, அதன் செயல்பாட்டின் தர்க்கம் தவறாக இருந்தால், நீங்கள் ஒரு முழு தரவுத்தளத்தையும் எளிதாக அழிக்கலாம், எனவே தூண்டுதல்கள் மிகவும் கவனமாக பிழைத்திருத்தப்பட வேண்டும்.

வழக்கமான வழக்கத்தைப் போலன்றி, ஒவ்வொரு முறையும் தூண்டுதல் மறைமுகமாக செயல்படுத்தப்படுகிறது. தூண்டுதல் நிகழ்வு, தவிர, அது எந்த வாதங்களும் இல்லை. அதைச் செயல்படுத்துவது சில நேரங்களில் தூண்டுதல் என்று அழைக்கப்படுகிறது. தூண்டுதல்களைப் பயன்படுத்தி, பின்வரும் இலக்குகள் அடையப்படுகின்றன:

  • உள்ளிடப்பட்ட தரவின் சரியான தன்மையை சரிபார்த்தல் மற்றும் சிக்கலான தரவு ஒருமைப்பாடு கட்டுப்பாடுகளை செயல்படுத்துவது கடினமானது, இல்லையெனில் சாத்தியமற்றது, ஒரு அட்டவணையில் அமைக்கப்பட்ட ஒருமைப்பாடு கட்டுப்பாடுகளைப் பயன்படுத்துதல்;
  • ஒரு குறிப்பிட்ட வழியில் செயல்படுத்தப்பட்ட அட்டவணையைப் புதுப்பிக்கும்போது சில செயல்களைச் செய்ய நினைவூட்டும் எச்சரிக்கைகளை வழங்குதல்;
  • செய்யப்பட்ட மாற்றங்கள் மற்றும் அவற்றைச் செய்த நபர்கள் பற்றிய தகவல்களைப் பதிவு செய்வதன் மூலம் தணிக்கைத் தகவல்களைக் குவித்தல்;
  • பிரதி ஆதரவு.

CREATE TRIGGER கட்டளையின் அடிப்படை வடிவம் கீழே காட்டப்பட்டுள்ளது:

<Определение_триггера>::= TRIGGER தூண்டுதல்_பெயரை உருவாக்கவும் | பிறகு<триггерное_событие>ஆன்<имя_таблицы> <тело_триггера>

நிகழ்வுகளைத் தூண்டுகிறதுஅட்டவணையில் வரிசைகளைச் செருகுதல், நீக்குதல் மற்றும் புதுப்பித்தல் ஆகியவற்றைக் கொண்டிருக்கும். பிந்தைய வழக்கில் தூண்டுதல் நிகழ்வுகுறிப்பிட்ட அட்டவணை நெடுவரிசை பெயர்களை நீங்கள் குறிப்பிடலாம். தூண்டுதல் நேரம் பயன்படுத்தி தீர்மானிக்கப்படுகிறது முக்கிய வார்த்தைகள்முன் (அதனுடன் தொடர்புடைய நிகழ்வுகள் செயல்படுத்தப்படுவதற்கு முன் தூண்டுதல் சுடப்படுகிறது) அல்லது பின் (அவை செயல்படுத்தப்பட்ட பிறகு).

தூண்டுதலால் செய்யப்படும் செயல்கள் ஒவ்வொரு வரிசைக்கும் (ஒவ்வொரு வரிசைக்கும்) கொடுக்கப்பட்ட நிகழ்வின் மூலம் குறிப்பிடப்படும், அல்லது ஒவ்வொரு நிகழ்வுக்கும் ஒரு முறை மட்டுமே (ஒவ்வொரு அறிக்கைக்கும்).

பதவி <список_старых_или_новых_псевдонимов> பழைய அல்லது போன்ற கூறுகளைக் குறிக்கிறது புதிய கோடு(பழைய/புதிய) பழைய அல்லது புதிய அட்டவணை(பழைய அட்டவணை / புதிய அட்டவணை). நிகழ்வுகளைச் செருகுவதற்கு பழைய மதிப்புகள் பொருந்தாது என்பதும், நிகழ்வுகளை நீக்க புதிய மதிப்புகள் பொருந்தாது என்பதும் தெளிவாகிறது.

சரியாகப் பயன்படுத்தினால், தூண்டுதல்கள் மிகவும் சக்திவாய்ந்த பொறிமுறையாக இருக்கும். அவற்றின் முக்கிய நன்மை என்னவென்றால், நிலையான செயல்பாடுகள் தரவுத்தளத்தில் சேமிக்கப்படும் மற்றும் ஒவ்வொரு முறை புதுப்பிக்கப்படும்போதும் தொடர்ந்து செயல்படுத்தப்படும். இது பயன்பாடுகளை பெரிதும் எளிதாக்கும். இருப்பினும், தூண்டுதலின் உள்ளார்ந்த குறைபாடுகளைக் குறிப்பிடுவது மதிப்பு:

  • சிக்கலானது: சில செயல்பாடுகள் தரவுத்தளத்திற்கு நகர்த்தப்படும் போது, ​​அதன் வடிவமைப்பு, செயல்படுத்தல் மற்றும் நிர்வாகத்தின் பணிகள் மிகவும் சிக்கலாகின்றன;
  • மறைக்கப்பட்ட செயல்பாடு: ஒரு தரவுத்தளத்தில் சில செயல்பாடுகளை நகர்த்துவது மற்றும் ஒன்று அல்லது அதற்கு மேற்பட்ட தூண்டுதல்களாக சேமிப்பது சில நேரங்களில் சில செயல்பாடுகள் பயனரிடமிருந்து மறைக்கப்படும். இது ஒரு குறிப்பிட்ட அளவிற்கு அதன் செயல்பாட்டை எளிதாக்குகிறது என்றாலும், துரதிர்ஷ்டவசமாக இது எதிர்பாராத, சாத்தியமான தேவையற்ற மற்றும் தீங்கு விளைவிக்கும் பக்க விளைவுகளை ஏற்படுத்தலாம், ஏனெனில் இந்த விஷயத்தில் பயனர் தரவுத்தளத்தில் நிகழும் அனைத்து செயல்முறைகளையும் கட்டுப்படுத்த முடியாது;
  • செயல்திறன் தாக்கம்: தரவுத்தளத்தின் நிலையை மாற்ற ஒவ்வொரு கட்டளையையும் செயல்படுத்துவதற்கு முன், இந்த கட்டளைக்கு ஒரு தூண்டுதல் இயக்கப்பட வேண்டுமா என்பதை தீர்மானிக்க டிபிஎம்எஸ் தூண்டுதல் நிலையை சரிபார்க்க வேண்டும். இத்தகைய கணக்கீடுகளைச் செய்வது DBMS இன் ஒட்டுமொத்த செயல்திறனைப் பாதிக்கிறது, மேலும் உச்ச சுமையின் போது, ​​அதன் குறைவு குறிப்பாக கவனிக்கத்தக்கதாக இருக்கும். வெளிப்படையாக, தூண்டுதல்களின் எண்ணிக்கை அதிகரிக்கும் போது, ​​அத்தகைய செயல்பாடுகளுடன் தொடர்புடைய மேல்நிலை செலவுகளும் அதிகரிக்கும்.

தவறாக எழுதப்பட்ட தூண்டுதல்கள் இறந்த பூட்டுகள் போன்ற கடுமையான சிக்கல்களுக்கு வழிவகுக்கும். தூண்டுதல்கள் நீண்ட காலத்திற்கு பல ஆதாரங்களைத் தடுக்கலாம், எனவே அணுகல் முரண்பாடுகளைக் குறைப்பதில் சிறப்பு கவனம் செலுத்தப்பட வேண்டும்.

MS SQL சர்வர் சூழலில் தூண்டுதல்களை செயல்படுத்துதல்

MS SQL சர்வர் DBMS செயல்படுத்தல் பின்வரும் தூண்டுதல் உருவாக்கம் அல்லது மாற்றியமைக்கும் ஆபரேட்டரைப் பயன்படுத்துகிறது:

<Определение_триггера>::= (உருவாக்கு | மாற்றவும்) TRIGGER தூண்டுதல்_பெயரை இயக்கவும் (அட்டவணை_பெயர் பிரதி ] sql_statement ஆக[...n] ) | ( ( [,] ) [ ] நிரல்_பெயர்)] [...n] |.

ஒரு தூண்டுதலை தற்போதைய தரவுத்தளத்தில் மட்டுமே உருவாக்க முடியும், ஆனால் தொலை சேவையகத்தில் உள்ளவை உட்பட பிற தரவுத்தளங்களை தூண்டுதலுக்குள் அணுக முடியும்.

CREATE | என்பதில் இருந்து வாதங்களின் நோக்கத்தைப் பார்ப்போம் தூண்டுதலை மாற்றவும்.

தூண்டுதல் பெயர் தரவுத்தளத்தில் தனிப்பட்டதாக இருக்க வேண்டும். கூடுதலாக, நீங்கள் உரிமையாளரின் பெயரைக் குறிப்பிடலாம்.

நீங்கள் என்கிரிப்ஷன் வாதத்துடன் குறிப்பிடும்போது, ​​சர்வர் தூண்டுதல் குறியீட்டை குறியாக்குகிறது, இதனால் நிர்வாகி உட்பட யாரும் அதை அணுகவோ படிக்கவோ முடியாது. புரோகிராமரின் அறிவுசார் சொத்து அல்லது வர்த்தக ரகசியமான தனியுரிம தரவு செயலாக்க வழிமுறைகளை மறைப்பதற்கு குறியாக்கம் பெரும்பாலும் பயன்படுத்தப்படுகிறது.

தூண்டுதல் வகைகள்

SQL சேவையகத்தில் தூண்டுதல்களின் நடத்தையை தீர்மானிக்கும் இரண்டு விருப்பங்கள் உள்ளன:

  • பிறகு. அதை அழைத்த கட்டளைகள் வெற்றிகரமாக முடிந்ததும் தூண்டுதல் செயல்படுத்தப்படுகிறது. எந்த காரணத்திற்காகவும் கட்டளைகளை வெற்றிகரமாக முடிக்க முடியாவிட்டால், தூண்டுதல் செயல்படுத்தப்படாது. பயனர் கோரிக்கையை செயல்படுத்துவதன் விளைவாக தரவு மாற்றங்கள் மற்றும் தூண்டுதல் செயல்படுத்தல் ஆகியவை ஒரு பரிவர்த்தனையின் உடலில் மேற்கொள்ளப்படுகின்றன என்பதைக் கவனத்தில் கொள்ள வேண்டும்: தூண்டுதல் திரும்பப் பெறப்பட்டால், பயனர் மாற்றங்களும் நிராகரிக்கப்படும். ஒவ்வொரு செயல்பாட்டிற்கும் பல தூண்டுதல்களுக்குப் பிறகு நீங்கள் பலவற்றை வரையறுக்கலாம் (செருகுதல், புதுப்பித்தல், நீக்குதல்). உங்களிடம் பல பின் தூண்டுதல்கள் டேபிளில் இருந்தால், sp_settriggerorder சிஸ்டம் ஸ்டோர்டு செயல்முறையைப் பயன்படுத்தி எந்த தூண்டுதல் முதலில் இயங்கும் மற்றும் எது கடைசியாக இயங்கும் என்பதைக் குறிப்பிடலாம். இயல்பாக, SQL சேவையகத்தில், அனைத்து தூண்டுதல்களும் தூண்டுதல்களுக்குப் பிறகு இருக்கும்.
  • அதற்கு பதிலாக . கட்டளைகளை இயக்குவதற்கு பதிலாக தூண்டுதல் அழைக்கப்படுகிறது. பின் தூண்டுதலைப் போலல்லாமல், ஒரு அட்டவணை மற்றும் பார்வை இரண்டிற்கும் தூண்டுதலின் பதிலாக வரையறுக்கலாம். ஒவ்வொரு நுழைவு, புதுப்பிப்பு, நீக்குதல் செயல்பாட்டிற்கும், தூண்டுதலுக்குப் பதிலாக ஒருவரை மட்டுமே வரையறுக்க முடியும்.

தூண்டுதல்கள் அவை பதிலளிக்கும் கட்டளைகளின் வகையால் வேறுபடுகின்றன.

மூன்று வகையான தூண்டுதல்கள் உள்ளன:

  • INSERT TRIGGER - INSERT கட்டளையைப் பயன்படுத்தி தரவைச் செருக முயற்சிக்கும்போது தூண்டப்பட்டது.
  • UPDATE TRIGGER - UPDATE கட்டளையைப் பயன்படுத்தி தரவை மாற்ற முயற்சிக்கும்போது தூண்டப்படுகிறது.
  • DELETE TRIGGER – DELETE கட்டளையைப் பயன்படுத்தி தரவை நீக்க முயற்சிக்கும்போது தூண்டப்படுகிறது.

கட்டுமானங்கள் [ நீக்கு] [,] [ செருகு ] [,] [ புதுப்பிக்கவும்]மற்றும் க்கு | பிறகு | அதற்கு பதிலாக ) ([,]தூண்டுதல் எந்த கட்டளைக்கு பதிலளிக்கும் என்பதை தீர்மானிக்கவும். அதை உருவாக்கும் போது, ​​குறைந்தபட்சம் ஒரு கட்டளையை குறிப்பிட வேண்டும். அனுமதிக்கப்பட்டது ஒரு தூண்டுதலை உருவாக்குகிறது, இரண்டு அல்லது மூன்று கட்டளைகளுக்கும் பதிலளிப்பது.

ஒவ்வொரு வகையிலும் பல தூண்டுதல்களை உருவாக்க APPEND மூலம் உங்களை அனுமதிக்கிறது.

மணிக்கு ஒரு தூண்டுதலை உருவாக்குகிறதுபிரதி பொறிமுறைகள் மூலம் அட்டவணைகள் மாற்றியமைக்கப்படும் போது, ​​REPLICATION அல்ல என்ற வாதத்துடன், அது இயங்குவது தடைசெய்யப்பட்டுள்ளது.

AS sql_operator[...n] கட்டுமானமானது SQL அறிக்கைகள் மற்றும் கட்டளைகளின் தொகுப்பை வரையறுக்கிறது, அவை தூண்டுதல் தொடங்கப்படும் போது செயல்படுத்தப்படும்.

ஒரு தூண்டுதலின் உள்ளே பல செயல்பாடுகள் அனுமதிக்கப்படாது என்பதை நினைவில் கொள்ளவும்:

  • தரவுத்தளத்தை உருவாக்குதல், மாற்றுதல் மற்றும் நீக்குதல்;
  • தரவுத்தளம் அல்லது பரிவர்த்தனை பதிவு காப்புப்பிரதியை மீட்டமைத்தல்.

இந்த கட்டளைகள் இயக்க அனுமதிக்கப்படாது, ஏனெனில் தூண்டுதல் செயல்படுத்தப்பட்ட பரிவர்த்தனை மீண்டும் உருட்டப்பட்டால், அவற்றைத் திரும்பப் பெற முடியாது. இந்த தடையானது உருவாக்கப்பட்ட தூண்டுதல்களின் செயல்பாட்டை எந்த வகையிலும் பாதிக்க வாய்ப்பில்லை. உதாரணமாக, அட்டவணை வரிசையை மாற்றிய பின், பரிவர்த்தனை பதிவு காப்புப்பிரதியை மீட்டெடுக்க வேண்டிய சூழ்நிலையைக் கண்டறிவது கடினம்.

தூண்டுதல் நிரலாக்கம்

பதிவுகளைச் சேர்ப்பது, மாற்றுவது மற்றும் நீக்குவது போன்ற கட்டளைகளை இயக்கும்போது, ​​சேவையகம் இரண்டு சிறப்பு அட்டவணைகளை உருவாக்குகிறது: செருகப்பட்டதுமற்றும் நீக்கப்பட்டது. பரிவர்த்தனை முடிந்ததும் அவை செருகப்படும் அல்லது நீக்கப்படும் வரிசைகளின் பட்டியல்களைக் கொண்டிருக்கும். செருகப்பட்ட மற்றும் நீக்கப்பட்ட அட்டவணைகளின் அமைப்பு, தூண்டுதல் வரையறுக்கப்பட்ட அட்டவணைகளின் கட்டமைப்பிற்கு ஒத்ததாக இருக்கும். ஒவ்வொரு தூண்டுதலும் அதன் சொந்த செருகப்பட்ட மற்றும் நீக்கப்பட்ட அட்டவணைகளை உருவாக்குகிறது, எனவே வேறு எந்த தூண்டுதலும் அவற்றை அணுக முடியாது. தூண்டுதலைச் செயல்படுத்திய செயல்பாட்டின் வகையைப் பொறுத்து, செருகப்பட்ட மற்றும் நீக்கப்பட்ட அட்டவணைகளின் உள்ளடக்கங்கள் வேறுபட்டிருக்கலாம்:

  • INSERT கட்டளை - செருகப்பட்ட அட்டவணையில் பயனர் அட்டவணையில் செருக முயற்சிக்கும் அனைத்து வரிசைகளும் உள்ளன; நீக்கப்பட்ட அட்டவணையில் ஒரு வரிசை இருக்காது; தூண்டுதல் முடிந்ததும், செருகப்பட்ட அட்டவணையில் இருந்து அனைத்து வரிசைகளும் மூல அட்டவணைக்கு நகர்த்தப்படும்;
  • DELETE கட்டளை - நீக்கப்பட்ட அட்டவணையில் பயனர் நீக்க முயற்சிக்கும் அனைத்து வரிசைகளும் இருக்கும்; தூண்டுதல் ஒவ்வொரு வரிசையையும் சரிபார்த்து அதை நீக்க அனுமதிக்கப்படுமா என்பதை தீர்மானிக்க முடியும்; செருகப்பட்ட அட்டவணையில் வரிசைகள் இருக்காது;
  • UPDATE கட்டளை - செயல்படுத்தப்படும் போது, ​​நீக்கப்பட்ட அட்டவணையில் பழைய வரிசை மதிப்புகள் உள்ளன, அவை தூண்டுதலை வெற்றிகரமாக முடித்தவுடன் நீக்கப்படும். புதிய வரிசை மதிப்புகள் செருகப்பட்ட அட்டவணையில் உள்ளன. தூண்டுதல் வெற்றிகரமாகச் செயல்படுத்தப்பட்ட பிறகு, இந்த வரிசைகள் மூல அட்டவணையில் சேர்க்கப்படும்.

தூண்டுதல் வெற்றிகரமாக முடிந்ததும் மாற்றப்படும் வரிசைகளின் எண்ணிக்கையைப் பற்றிய தகவலைப் பெற, நீங்கள் @@ROWCOUNT செயல்பாட்டைப் பயன்படுத்தலாம். இது கடைசி கட்டளையால் செயலாக்கப்பட்ட வரிசைகளின் எண்ணிக்கையை வழங்குகிறது. ஒரு குறிப்பிட்ட வரியை மாற்ற முயற்சிக்கும்போது தூண்டுதல் சுடப்படுவதில்லை என்பதை வலியுறுத்த வேண்டும், ஆனால் மாற்ற கட்டளை செயல்படுத்தப்படும் தருணத்தில். அத்தகைய ஒரு கட்டளை பல வரிசைகளை பாதிக்கிறது, எனவே தூண்டுதல் இந்த வரிசைகள் அனைத்தையும் செயல்படுத்த வேண்டும்.

100 வரிசைகளில் செருகப்பட்ட, மாற்றியமைக்கப்பட்ட அல்லது நீக்கப்பட்ட வரிசைகளில் ஒன்று மட்டும் சில நிபந்தனைகளைப் பூர்த்தி செய்யவில்லை என்பதை தூண்டுதல் கண்டறிந்தால், எந்த வரிசையும் செருகப்படாது, மாற்றப்படாது அல்லது நீக்கப்படாது. இந்த நடத்தை பரிவர்த்தனையின் தேவைகள் காரணமாகும் - அனைத்து மாற்றங்களும் செய்யப்பட வேண்டும் அல்லது எதுவும் செய்யப்பட வேண்டும்.

ஒரு தூண்டுதல் ஒரு மறைமுகமாக வரையறுக்கப்பட்ட பரிவர்த்தனையாக செயல்படுகிறது, எனவே பரிவர்த்தனை கட்டுப்பாட்டு கட்டளைகளை தூண்டுதலுக்குள் பயன்படுத்தலாம். குறிப்பாக, ஒருமைப்பாடு தடை மீறல் கண்டறியப்பட்டால், தூண்டுதலை நிறுத்துவதற்கும், பயனர் செய்ய முயற்சித்த மாற்றங்களைச் செயல்தவிர்ப்பதற்கும் ROLLBACK TRANSACTION கட்டளை பயன்படுத்தப்பட வேண்டும்.

தூண்டுதலைச் செயல்படுத்த காரணமான INSERT அல்லது UPDATE கட்டளைகளால் மாற்றியமைக்கப்பட்ட நெடுவரிசைகளின் பட்டியலைப் பெற, COLUMNS_UPDATED() செயல்பாட்டைப் பயன்படுத்தலாம். இது ஒரு பைனரி எண்ணை வழங்குகிறது, இதில் ஒவ்வொரு பிட், குறைந்தபட்சம் குறிப்பிடத்தக்க பிட்டில் தொடங்கி, அட்டவணையின் ஒரு நெடுவரிசைக்கு ஒத்திருக்கிறது (அட்டவணை உருவாக்கப்பட்ட போது நெடுவரிசைகளின் வரிசையில்). ஒரு பிட் "1" என அமைக்கப்பட்டால், தொடர்புடைய நெடுவரிசை மாற்றியமைக்கப்படும். கூடுதலாக, ஒரு நெடுவரிசை மாறியிருப்பது UPDATE செயல்பாட்டால் தீர்மானிக்கப்படுகிறது (column_name).

க்கு தூண்டுதலை அகற்றுகட்டளை பயன்படுத்தப்படுகிறது

டிராப் TRIGGER (trigger_name) [,...n]

தூண்டுதல்களைப் பயன்படுத்துவதற்கான எடுத்துக்காட்டுகள் இங்கே.

எடுத்துக்காட்டு 14.1.தூண்டுதலைப் பயன்படுத்துதல் மதிப்பின் மீதான கட்டுப்பாடுகளை செயல்படுத்துதல். பரிவர்த்தனை அட்டவணையில் சேர்க்கப்பட்டுள்ள பதிவில், விற்கப்படும் பொருளின் அளவு, கிடங்கு அட்டவணையில் இருந்து அதன் இருப்புக்குக் குறைவாக இருக்கக்கூடாது.

ஒப்பந்த அட்டவணையில் ஒரு பதிவைச் செருகுவதற்கான கட்டளை, எடுத்துக்காட்டாக, இது போன்றது:

வர்த்தக மதிப்புகளில் செருகவும் (3,1,-299,"01/08/2002")

உருவாக்கப்பட்ட தூண்டுதல் அதன் செயல்பாட்டிற்கு பின்வரும் வழியில் செயல்பட வேண்டும்: கிடங்கு அட்டவணையில் உள்ளிடப்பட்ட குறியீட்டுடன் உற்பத்தியின் விற்பனை அளவை விட தயாரிப்பு இருப்பு குறைவாக இருந்தால் கட்டளையை ரத்து செய்வது அவசியம் (உதாரணமாக, தயாரிப்பு குறியீடு = 3 ) செருகப்பட்ட பதிவில், தயாரிப்பு வழங்கப்பட்டால், தயாரிப்பின் அளவு “+” குறியுடனும், அது விற்கப்பட்டால் “-” அடையாளத்துடனும் குறிக்கப்படுகிறது. வழங்கப்பட்ட தூண்டுதல் ஒரு சேர்க்கப்பட்ட பதிவை மட்டுமே செயலாக்கும் வகையில் கட்டமைக்கப்பட்டுள்ளது.

@@ROWCOUNT=1 தொடக்கம் இல்லை எனில் செருகுவதற்கு, TRIGGER தூண்டுதல்_இன்களை உருவாக்கவும் (செருகப்பட்ட இடத்திலிருந்து * தேர்ந்தெடுக்கவும்<=ALL(SELECT Склад.Остаток FROM Склад,Сделка WHERE Склад.КодТовара= Сделка.КодТовара)) BEGIN ROLLBACK TRAN PRINT "Отмена поставки: товара на складе нет" END END எடுத்துக்காட்டு 14.1. ஒரு மதிப்பின் மீதான கட்டுப்பாடுகளை செயல்படுத்த தூண்டுதலைப் பயன்படுத்துதல்.

எடுத்துக்காட்டு 14.2.புள்ளியியல் தரவைச் சேகரிக்க தூண்டுதலைப் பயன்படுத்துதல்.

ஒப்பந்த அட்டவணையில் ஒரு பதிவைச் செருகுவதற்கான செயல்பாட்டைச் செயல்படுத்த ஒரு தூண்டுதலை உருவாக்கவும், எடுத்துக்காட்டாக, பின்வரும் கட்டளை:

வர்த்தக மதிப்புகளில் செருகவும் (3,1,200,"01/08/2002")

குறியீடு 3 கொண்ட தயாரிப்பு 200 யூனிட்களில் குறியீடு 1 உடன் வாடிக்கையாளரிடமிருந்து வழங்கப்படுகிறது.

ஒரு பொருளை விற்கும்போது அல்லது பெறும்போது, ​​சரக்குகளின் அளவை அதற்கேற்ப சரிசெய்ய வேண்டும். தயாரிப்பு இன்னும் கையிருப்பில் இல்லை என்றால், நீங்கள் கிடங்கு அட்டவணையில் தொடர்புடைய உள்ளீட்டைச் சேர்க்க வேண்டும். தூண்டுதல் ஒரு கூடுதல் வரிசையை மட்டுமே செயலாக்குகிறது.

ALTER TRIGGER Trigger_ins ஆன் ட்ரான்ஸாக்ஷன் ஆன் டிரக்டர் @x INT, @y INT IF @@ROWCOUNT=1 --ஒரு பதிவேடு பரிவர்த்தனை அட்டவணையில் சேர்க்கப்படும் பொருட்களின் டெலிவரி BEGIN --விற்பனை செய்யப்பட்ட பொருட்களின் அளவு இருக்கக்கூடாது -- கிடங்கு அட்டவணையில் இருந்து அதன் இருப்பை விட குறைவாக இருந்தால்< =ALL(SELECT Склад.Остаток FROM Склад,Сделка WHERE Склад.КодТовара= Сделка.КодТовара)) BEGIN ROLLBACK TRAN PRINT "откат товара нет " END --если записи о поставленном товаре еще нет, --добавляется соответствующая запись --в таблицу Склад IF NOT EXISTS (SELECT * FROM Склад С, inserted i WHERE С.КодТовара=i.КодТовара) INSERT INTO Склад (КодТовара,Остаток) ELSE --если запись о товаре уже была в таблице --Склад, то определяется код и количество --товара издобавленной в таблицу Сделка записи BEGIN SELECT @y=i.КодТовара, @x=i.Количество FROM Сделка С, inserted i WHERE С.КодТовара=i.КодТовара --и производится изменения количества товара в --таблице Склад UPDATE Склад SET Остаток=остаток+@x WHERE КодТовара=@y END END எடுத்துக்காட்டு 14.2. புள்ளியியல் தரவைச் சேகரிக்க தூண்டுதலைப் பயன்படுத்துதல்.

எடுத்துக்காட்டு 14.3.ஒப்பந்த அட்டவணையில் இருந்து ஒரு பதிவை நீக்கும் செயல்பாட்டைச் செயல்படுத்த ஒரு தூண்டுதலை உருவாக்கவும், எடுத்துக்காட்டாக, பின்வரும் கட்டளை:

பதிவேடு நீக்கப்பட்ட போது அதன் குறியீடு குறிப்பிடப்பட்ட தயாரிப்புக்கு, அதன் பங்கு இருப்பை சரிசெய்ய வேண்டியது அவசியம். தூண்டுதல் ஒரு பதிவை மட்டுமே நீக்குவதற்கு செயலாக்குகிறது.

@@ROWCOUNT=1 என நீக்குவதற்கு, TRIGGER Trigger_del ஐ உருவாக்கவும் -- ஒரு பதிவு நீக்கப்பட்டது BEGIN @y INT,@x INT என அறிவிக்கவும் --பதிவின் குறியீடு மற்றும் தயாரிப்பின் அளவு தீர்மானிக்கப்படுகிறது -- கிடங்கு அட்டவணையில் இருந்து நீக்கப்பட்டது தேர்ந்தெடு @y=தயாரிப்புக் குறியீடு, @ x=அளவு நீக்கப்பட்டது --கிடங்கு அட்டவணையில் --உருப்படியின் அளவு சரிசெய்யப்பட்டது புதுப்பிக்கப்பட்ட கிடங்கு தொகுப்பு மீதமுள்ளது=மீதம்-@x எங்கே தயாரிப்பு குறியீடு=@y முடிவு எடுத்துக்காட்டு 14.3. அட்டவணையில் இருந்து பதிவை நீக்கும் செயல்பாட்டைச் செயலாக்குவதற்கான தூண்டுதல்

எடுத்துக்காட்டு 14.4.ஒப்பந்த அட்டவணையில் ஒரு பதிவை மாற்றுவதற்கான செயல்பாட்டை செயல்படுத்த ஒரு தூண்டுதலை உருவாக்கவும், எடுத்துக்காட்டாக, பின்வரும் கட்டளையுடன்:

3 க்கு சமமான குறியீட்டைக் கொண்ட பொருட்களுடனான அனைத்து பரிவர்த்தனைகளிலும், பொருட்களின் அளவை 10 அலகுகள் குறைக்கவும்.

குறிப்பிடப்பட்ட கட்டளை ஒப்பந்த அட்டவணையில் ஒரே நேரத்தில் பல பதிவுகளில் மாற்றங்களுக்கு வழிவகுக்கும். எனவே, ஒன்றுக்கு மேற்பட்ட பதிவுகளைச் செயலாக்கும் தூண்டுதலை எவ்வாறு உருவாக்குவது என்பதைக் காண்பிப்போம். மாற்றப்பட்ட ஒவ்வொரு நுழைவுக்கும், பழைய (மாற்றத்திற்கு முன்) தயாரிப்புக் குறியீடு, கிடங்கில் உள்ள தயாரிப்பின் சமநிலையை, பழைய (மாற்றத்திற்கு முன்) உற்பத்தியின் அளவு மற்றும் புதிய (பின்னர்) மதிப்பின் மூலம் குறைக்க வேண்டியது அவசியம். மாற்றம்) புதிய (மாற்றத்திற்குப் பிறகு) மதிப்பின் மதிப்பின் மூலம் கிடங்கில் அதன் சமநிலையை அதிகரிக்க தயாரிப்பு குறியீடு. மாற்றப்பட்ட அனைத்து பதிவுகளையும் செயலாக்க, கர்சர்களை அறிமுகப்படுத்துவோம், அதில் பழைய அனைத்தையும் (நீக்கிய அட்டவணையில் இருந்து) மற்றும் அனைத்து புதிய மதிப்புகளையும் (செருகப்பட்ட அட்டவணையில் இருந்து) சேமிப்போம்.

@x INT, @x_old INT, @y INT, @y_old INT -- புதிய மதிப்புகள் கொண்ட கர்சர் CUR1 CURSOR ஐத் தேர்ந்தெடுக்கவும் ​தேர்ந்தெடுக்கப்பட்ட தயாரிப்புக் குறியீட்டிற்கு CUR2 கர்சரை அறிவிக்கவும், நீக்கப்பட்ட OPEN CUR1 OPEN CUR2 இலிருந்து அளவு -- இரண்டு கர்சர்கள் வழியாகவும் இணையாக நகர்த்தவும். BEGIN -- பழைய தயாரிப்புக் குறியீட்டிற்கு அது குறைகிறது --கிடங்கில் உள்ள அளவு UPDATE Warehouse SET மீதமுள்ளது=மீதமுள்ள-@y_old WHERE தயாரிப்பு குறியீடு=@x_old --புதிய தயாரிப்புக் குறியீட்டிற்கு, அத்தகைய தயாரிப்பு இன்னும் கையிருப்பில் இல்லை என்றால், இல்லை என்றால் புதிய பதிவு உள்ளிடப்படும் (தயாரிப்புக் குறியீடு=@x) கிடங்கில் செருகவும் கையிருப்பில் அதன் அளவு UPDATE கிடங்கு SET மீதமுள்ளது=மீதமுள்ள+@y எங்கே தயாரிப்பு குறியீடு=@x CUR1 இலிருந்து @x, @y FETCH அடுத்தது CUR2 இலிருந்து @x_old, @y_old END CLOSE CUR1 CURCALOCADEALLO DEALLO எடுத்துக்காட்டு 14.4. ஒரு அட்டவணையில் ஒரு பதிவை மாற்றுவதற்கான செயல்பாட்டைச் செயலாக்குவதற்கான தூண்டுதல்

பரிசீலிக்கப்பட்ட தூண்டுதலில், ஒரு பரிவர்த்தனை பதிவேடு கிடங்கில் அதன் இருப்புடன் மாற்றப்படும் போது பொருட்களின் அளவை ஒப்பிடுவது இல்லை.

எடுத்துக்காட்டு 14.5.இந்தக் குறையை சரி செய்வோம். ஒரு பிழை செய்தியை உருவாக்க, தூண்டுதலின் உடலில் MS SQL சர்வர் RAISERROR கட்டளையைப் பயன்படுத்துகிறோம், இதன் வாதங்கள் செய்தி உரை, தீவிர நிலை மற்றும் பிழை நிலை.

TRIGGER TRIGGER_updஐப் புதுப்பிக்கவும் CUR1 ஐ திறக்கவும்<-@y BEGIN RAISERROR("откат",16,10) CLOSE CUR1 CLOSE CUR2 DEALLOCATE CUR1 DEALLOCATE CUR22 ROLLBACK TRAN RETURN END UPDATE Склад SET Остаток=Остаток-@y_old WHERE КодТовара=@x_old IF NOT EXISTS (SELECT * FROM Склад WHERE КодТовара=@x) INSERT INTO Склад(КодТовара,Остаток) VALUES (@x,@y) ELSE UPDATE Склад SET Остаток=Остаток+@y WHERE КодТовара=@x FETCH NEXT FROM CUR1 INTO @x, @y FETCH NEXT FROM CUR2 INTO @x_old, @y_old END CLOSE CUR1 CLOSE CUR2 DEALLOCATE CUR1 DEALLOCATE CUR2 எடுத்துக்காட்டு 14.5. அட்டவணையில் பதிவை மாற்றும் செயல்பாட்டைச் செயலாக்குவதற்கான தூண்டுதலின் திருத்தப்பட்ட பதிப்பு

எடுத்துக்காட்டு 14.6.எடுத்துக்காட்டில், குறைந்தபட்சம் ஒன்றைச் செயல்படுத்த முடியாவிட்டால், எல்லா மாற்றங்களும் ரத்து செய்யப்படும். சில பதிவுகளில் மட்டும் மாற்றங்களை ரத்து செய்து மீதமுள்ளவற்றை மாற்ற அனுமதிக்கும் தூண்டுதலை உருவாக்குவோம்.

இந்த வழக்கில், பதிவுகள் மாற்றப்பட்ட பிறகு தூண்டுதல் செயல்படுத்தப்படாது, மாறாக மாற்ற கட்டளைக்கு பதிலாக.

@k INT, @k_old INT அறிவிக்கவும் @x INT, @x_old INT, @y INT அறிவிக்கவும் @y_old INT ,@o INT அறிவிக்கவும் CUR1 CURSOR குறியீடு, தயாரிப்பு பரிவர்த்தனைக்கான குறியீடு, தரத்தை தேர்வு செய்யவும். பரிவர்த்தனை குறியீடு, தயாரிப்புக் குறியீடு, நீக்கப்பட்டதில் இருந்து அளவு, OPEN CUR1 OPEN CUR2 ஐ CUR1 இலிருந்து @k,@x, @y FETCH NEXT இலிருந்து @k,@x, @k_old,@x_old, 0 BEGIN தேர்ந்தெடு @ o=கிடங்கில் இருந்து மீதமுள்ளவை எங்கே தயாரிப்பு குறியீடு=@x என்றால் @o>=-@y BEGIN RAISERROR("மாற்றம்",16,10) புதுப்பி பரிவர்த்தனை SET அளவு=@y, தயாரிப்பு குறியீடு=@x பரிவர்த்தனை குறியீடு எங்கே =@k புதுப்பிப்பு கிடங்கு தொகுப்பு மீதமுள்ளது =மீதம் உள்ளது-@y_old எங்கே உருப்படிக் குறியீடு=@x_old இல்லாவிட்டால் வேறு புதுப்பிப்பு கிடங்கு தொகுப்பு மீதமுள்ளது=மீதமுள்ள+@y எங்கே பொருள் குறியீடு=@x END ELSE RAISERROR("பதிவு மாற்றப்படவில்லை",16,10) CUR1 இலிருந்து @k,@x, @y FETCH NEXT இலிருந்து @k_2, INTO @x_old, @y_old END CLOSE CUR1 CLOSE CUR2 DEALLOCATE CUR1 DEALLOCATE CUR2 எடுத்துக்காட்டு 14.6. சில பதிவுகளில் மட்டும் மாற்றங்களைச் செயல்தவிர்க்கவும் மற்றவற்றில் மாற்றங்களைச் செய்யவும் உங்களை அனுமதிக்கும் தூண்டுதல்.