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

seq और ट्रिगर के साथ oracle में Autoincrement - अमान्य sql कथन

मुझे संदेह है कि समस्या यह है कि आपका क्लाइंट टूल प्रत्येक अर्धविराम को एक कमांड के अंत के रूप में पढ़ रहा है, जिससे पीएल/एसक्यूएल कोड (जिसे स्टेटमेंट टर्मिनेटर के रूप में अर्धविराम की आवश्यकता होती है) को सर्वर पर गलत तरीके से प्रेषित किया जाता है।

जब आप अर्धविराम हटाते हैं, तो कथन सर्वर को सही ढंग से भेजा जाता है, लेकिन आप एक अमान्य वस्तु के साथ समाप्त हो जाते हैं क्योंकि PL/SQL गलत है।

मैंने आपकी समस्या को SQL Fiddle पर दोहराया है। फिर मैं स्टेटमेंट टर्मिनेटर को / . में बदल देता हूं ; . के बजाय और प्रत्येक कथन को निष्पादित करने के लिए स्लैश का उपयोग करने के लिए कोड को बदल दिया, और यह त्रुटि के बिना काम किया:

CREATE TABLE proposals (
    proposal_id INT NOT NULL,
    target_audience VARCHAR2(50) NOT NULL,
    line_of_business VARCHAR2(50),
    activity_description VARCHAR2(250) NOT NULL,
    cost NUMBER(19, 4),
    comments VARCHAR2(250),
    objectives_and_results VARCHAR2(250),
    PRIMARY KEY (proposal_id)
)
/

CREATE SEQUENCE proposals_seq MINVALUE 1 
START WITH 1 INCREMENT BY 1 CACHE 10
/

CREATE OR REPLACE TRIGGER proposals_before_insert
BEFORE INSERT ON proposals FOR EACH ROW
BEGIN
    select proposals_seq.nextval into :new.proposal_id from dual;
END;
/


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

  2. एक XSD दिनांक xs:dateTime को Oracle दिनांक में कनवर्ट करना

  3. दो स्तंभों के बीच की संख्याओं की सूची प्राप्त करें

  4. Oracle:शर्त के साथ पूर्ण पाठ खोज

  5. ओरेकल और पोस्टग्रेएसक्यूएल के बीच अलग-अलग डिफ़ॉल्ट ऑर्डरिंग