Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

क्या डेटाबेस में सर्कुलर संदर्भ स्वीकार्य हैं?

शहरों और राज्यों पर विचार करें। प्रत्येक शहर एक राज्य के भीतर मौजूद है। प्रत्येक राज्य की एक राजधानी होती है।

CREATE TABLE city (
  city  VARCHAR(32),
  state VARCHAR(32) NOT NULL,
  PRIMARY KEY (city),
  FOREIGN KEY (state) REFERENCES state (state)
);

CREATE TABLE state (
  state VARCHAR(32),
  capital_city VARCHAR(32),
  PRIMARY KEY (state),
  FOREIGN KEY (capital_city) REFERENCES city (city)
);

पहली समस्या - जैसा कि दिखाया गया है, आप इन तालिकाओं को नहीं बना सकते हैं, क्योंकि एक विदेशी कुंजी उस तालिका में एक कॉलम का संदर्भ नहीं दे सकती जो (अभी तक) मौजूद नहीं है। समाधान उन्हें विदेशी कुंजियों के बिना बनाना है, और फिर बाद में विदेशी कुंजियों को जोड़ना है।

दूसरी समस्या - आप किसी भी तालिका में पंक्तियाँ सम्मिलित नहीं कर सकते, क्योंकि प्रत्येक सम्मिलन के लिए दूसरी तालिका में पहले से मौजूद पंक्ति की आवश्यकता होगी। समाधान विदेशी कुंजी कॉलम में से एक को न्यूल होने के लिए सेट करना है, और उस डेटा को दो चरणों में सम्मिलित करना है। उदा.

--Create state record
INSERT INTO state (state, capital_city) VALUES ('Florida', NULL);

--Create various city records
INSERT INTO city (city, state) VALUES ('Miami', 'Florida');
INSERT INTO city (city, state) VALUES ('Tallahassee', 'Florida');
INSERT INTO city (city, state) VALUES ('Orlando', 'Florida');

--Set one of the cities as the capital
UPDATE state SET capital_city = 'Tallahassee' WHERE state = 'Florida';


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. TO_CHAR(संख्या) Oracle में कार्य

  2. oracle 12c - किसी वर्ण की अंतिम घटना के बाद स्ट्रिंग का चयन करें

  3. Oracle में महीने के नाम के बाद अनुगामी रिक्त स्थान कैसे निकालें?

  4. SQL अद्यतन कैस्केड के साथ त्रुटि प्राप्त करते रहें

  5. पीएल/एसक्यूएल के लिए यूनिट परीक्षण