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

पोस्टग्रेज में जेनरेटेड वैल्यू

मुझे लगता है कि पेटार से स्वीकृत उत्तर सही नहीं है, या अब सही नहीं है। Postgres में स्वतः-वृद्धि को SERIAL . के माध्यम से नियंत्रित किया जाता है छद्म प्रकार, यह सही है। हालांकि, पेटार द्वारा दी गई मैपिंग के परिणामस्वरूप हाइबरनेट 5.1 द्वारा उत्पन्न निम्नलिखित डीडीएल होगा:

CREATE SEQUENCE users_id_seq START 1 INCREMENT 50;

CREATE TABLE … (
    id INT8 NOT NULL,
    …
);

यह SERIAL का उपयोग नहीं कर रहा है , लेकिन एक हाइबरनेट प्रबंधित अनुक्रम। यह तालिका के स्वामित्व में नहीं है और कोई डिफ़ॉल्ट मान सेट नहीं किया गया है। बेशक, डीडीएल पीढ़ी एक ऐसी सुविधा है जिसका उपयोग बहुत से लोग उत्पादन में नहीं करते हैं (लेकिन कई जेनरेट कोड को टेम्पलेट के रूप में लेते हैं)।

यदि आप अपना डीडीएल हाथ से लिखते हैं और वास्तव में SERIAL का उपयोग करते हैं , फिर GenerationType.SEQUENCE . का उपयोग करके डेटाबेस व्यवहार के साथ संघर्ष भी कर सकता है। पोस्टग्रेज की पसंदीदा आईडी रणनीति के साथ हाइबरनेट को मैप करने का सही तरीका GenerationType.IDENTITY का उपयोग करना है . संयोग से, कोड भी बहुत छोटा और अधिक पठनीय है:

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
Long id;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. रिकॉर्ड प्राप्त करें जहां जेसन कॉलम कुंजी रिक्त है

  2. पोस्टग्रेज़ करने के लिए तेज़ पांडा डेटाफ़्रेम लिखें

  3. पोस्टग्रेस्क्ल विदेशी कुंजी सिंटैक्स

  4. Oracle से PostgreSQL — कर्सर और कॉमन टेबल एक्सप्रेशन

  5. PostgreSQL त्रुटि:संबंध पहले से मौजूद है