چطور میشه در sql2000 با دستورات DDL نوع عملیات حذف و update رو مشخص کرد
کدوم نوع ها(cascade,restricted,no action,set null,set defalt) رو با دستور میشه معرفی کرد و بقیه روش ها رو چطور باید برای دیتا بیس معرفی کرد
ارتباط جداول هم با کلید خارجی هست
چطور میشه در sql2000 با دستورات DDL نوع عملیات حذف و update رو مشخص کرد
کدوم نوع ها(cascade,restricted,no action,set null,set defalt) رو با دستور میشه معرفی کرد و بقیه روش ها رو چطور باید برای دیتا بیس معرفی کرد
ارتباط جداول هم با کلید خارجی هست
دستور Create Table و Alter Table رو توی Books Online ببینید، توضیح داده
این طور که من فهمیدم تو sql2000 فقط دو روش cascade,no action رو میشه با دستور هنگام ایجاد جدول تعریف کرد
بقیه گزینه ها رو چطور میشه برای یه جدول تعریف کرد؟
دوست عزیزم،
ایجاد Referential Integrity دو راه کلاسیک داره:
1) Declarative
2) Procedural
در روش اول شما از قابلیتهای خود FK استفاده میکنین. FK در SQL Server 2000 فقط NO ACTION و CASCADE رو پشتیبانی میکنه.
در روش دوم شما Trigger مینویسین. در SQL Server 2000 شما اگر قابلیتهای دیگه ای نیاز دارین، باید Trigger بنویسین. در SQL Server 2005 عملیاتی مثل SET NULL و SET DEFAULT توسط FK پشتیبانی میشن و نیازی به Trigger نیست
ممنونم
میشه یه مثال بزنید برام با trigger
من یه نمونه کد از یه تریگر میخوام که توش نوع عملیات رو هم مشخص کرده باشه
CREATE TRIGGER trig1
on authors
FOR INSERT, UPDATE, DELETE
AS
SELECT a.au_lname, a.au_fname, x.info
FROM authors a INNER JOIN does_not_exist x
ON a.au_id = x.au_id
GO
ممنونم
حالا اگه بخوام مثلا نوع عملیات حذف رو set null بذارم دقیقا چطور باید بنویسمش
اگر فرضا" شما یک trigger برای جدول trig_example نوشته باشین با نام trig1 با دستور زیر میتونین غیر فعال کنین
ALTER TABLE trig_example DISABLE TRIGGER trig1
GO
کد زیر هم برای فعال کردن Trigger استفاده میشه
ALTER TABLE trig_example ENABLE TRIGGER trig1
GO
کد زیر هم برای حذف کامل trigger
IF EXISTS (SELECT name FROM sysobjects
WHERE name = 'employee_insupd' AND type = 'TR')
DROP TRIGGER employee_insupd
GO