Шетелдік кілт бос Postgres болуы мүмкін бе?
Шетелдік кілт бос Postgres болуы мүмкін бе?

Бейне: Шетелдік кілт бос Postgres болуы мүмкін бе?

Бейне: Шетелдік кілт бос Postgres болуы мүмкін бе?
Бейне: SQL для тестировщика —CREATE TABLE, INSERT, UPDATE и др. 2024, Қараша
Anonim

INSERT INTO product VALUES (11, "Джо үшін", 1); INSERT INTO product VALUES (22, 'барлығы үшін', NULL ); Нөлдік мәнге ие болу өте заңды шетелдік кілт баған.

Сондай-ақ сұрақ туындайды, шетелдік кілт нөл болуы мүмкін бе?

А шетелдік кілт оның кестесін тектік кесте деп аталатын басқа кестеге тәуелді етеді. А шетелдік кілт қамтитын null мәндер басты мәндерге сәйкес келмейді кілт , ата-анасынан бері кілт анықтамасы бойынша алады жоқ null құндылықтар. Алайда, а null сыртқы кілт мән әрқашан жарамды, оның кез келген мәніне қарамастан null бөліктері.

Сонымен қатар, PostgreSQL жүйесінде сыртқы кілтті қалай қосуға болады? ҚОСУ CONSTRAINT шектеу_атауы ШЕТЕЛ КІЛТІ (c1) ӘДЕБИЕТТЕР ата-аналық_кесте (p1); Қалаған кезде бір соңғы ескерту шетел кілтін қосыңыз ON DELETE CASCADE параметрімен бар кестеге шектеу қойсаңыз, келесі қадамдарды орындауыңыз керек: Барын тастаңыз шетелдік кілт шектеу. қосу жаңа шетелдік кілт ON DELETE CASCADE әрекетімен шектеу.

Сонда шетелдік кілт бос MySQL болуы мүмкін бе?

5 Жауаптар. NULL мәндері шетелдік кілттер толығымен қабылданады. NULL мәндерімен жұмыс істеу шетелдік кілттер қиын, бірақ бұл сіз мұндай бағандарды ЕМЕС деп өзгертесіз дегенді білдірмейді NULL және анықтамалық кестелеріңізге жалған жазбаларды («Жоқ», «Белгісіз», «Мән жоқ» т.б.) енгізіңіз.

Шетелдік кілттер қажет пе?

Мақсатынан бері шетелдік негізгі сілтеме берілген кестенің белгілі бір жолын анықтау болып табылады, бұл әдетте қажет бұл шетелдік кілт кандидатқа тең енгізіңіз негізгі кестенің кейбір жолында немесе мәні жоқ (NULL мәні.). Бұл ереже екі кесте арасындағы сілтеме тұтастығын шектеу деп аталады.

Ұсынылған: