سلام دوستان
2 تا جدول دارم که در جدول شماره 2 فیلد مثلا uid کلید خارجی از جدول شماره 1 هست، حالا میخوام اگه یکی از uidها رو از جدول اصلی (شماره 1) حذف کردم در جدول دوم مقدار اون uid (کلید خارجی) null بشه. چطور میتونم این کار رو بکنم؟
Printable View
سلام دوستان
2 تا جدول دارم که در جدول شماره 2 فیلد مثلا uid کلید خارجی از جدول شماره 1 هست، حالا میخوام اگه یکی از uidها رو از جدول اصلی (شماره 1) حذف کردم در جدول دوم مقدار اون uid (کلید خارجی) null بشه. چطور میتونم این کار رو بکنم؟
سلام
توی تعریف جدولی که کلید خارجی توش هست باید بعد از تعریف فیلد ها کد زیر رو استفاده کنید:
کد بالا میگه فیلد uid که توی همین جدول تعریف شده یه کلید خارجیه به جدول jadval1 فیلد uid (کلید اصلی)کد:FOREIGN KEY uid REFRENCES jadval1(uid)
ON DELETE CASCADE
ON UPDATE CASCADE
ON DELETE CASCADE زمان پاک شدن کلید اصلی ، کلید خارجی هم پاک می کنه...
ON UPDATE CASCADE زمان تغییر کلید اصلی، کلید خارجی هم تغییر می کنه...
تعریف جدول با کلید خارجی:
کد:CREATE TABLE TABLE_NAME (
id INTEGER PRIMARY KEY,
col2 CHARACTER VARYING(20),
col3 INTEGER,
...
FOREIGN KEY(col3)
REFERENCES other_table(key_col) ON DELETE CASCADE,
FOREIGN KEY(col2)
REFERENCES other_table2(key_col2) ON DELETE CASCADE,
...
)
افزودن کلیدخارجی به جدول:
کد:ALTER TABLE <TABLE identifier>
ADD [ CONSTRAINT <CONSTRAINT identifier> ]
FOREIGN KEY ( <COLUMN expression> {, <COLUMN expression>}... )
REFERENCES <TABLE identifier> [ ( <COLUMN expression> {, <COLUMN expression>}... ) ]
[ ON UPDATE <referential action> ]
[ ON DELETE <referential action> ]
اینجا رو ببینید:
موفق باشی...کد:http://en.wikipedia.org/wiki/Foreign_key
سلام
ممنون از جوابتون اما من نمی خوام مقدار کلید خارجی آپدیت یا حذف بشه بلکه میخوام با حذف کلید خارجی در جدول اول، در جدول دوم مقدارش null بشه یا یه مقدار خاص( مثلا کلمه null ) بجاش قرار بگیره :worried:
به جای ON DELETE CASCADE اینو بزارید:
مثال:کد:ON DELETE SET NULL
کد:http://www.techonthenet.com/oracle/foreign_keys/foreign_null.php
http://searchoracle.techtarget.com/answer/ON-DELETE-SET-NULL-for-lookup-tables
با سلام و خسته نباشید.کدی که توضیح دادین باید کجا بنویسم
FOREIGN KEY uid REFRENCES jadval1(uid) ON DELETE CASCADE ON UPDATE CASCADE