sql >> Database >  >> RDS >> Oracle

Auto-increment in oracle met seq en trigger - ongeldige sql-instructie

Ik vermoed dat het probleem is dat uw clienttool elke puntkomma leest als het einde van een opdracht, waardoor PL/SQL-code (waarvoor puntkomma's als instructiebeëindigingen vereist zijn) onjuist naar de server wordt verzonden.

Wanneer u de puntkomma verwijdert, wordt de instructie correct naar de server verzonden, maar u krijgt een ongeldig object omdat de PL/SQL onjuist is.

Ik heb je probleem gedupliceerd op SQL Fiddle. Dan verander ik de instructie terminator in / in plaats van ; en veranderde de code om een ​​schuine streep te gebruiken om elke instructie uit te voeren, en het werkte zonder fouten:

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. Oracle Concurrent Manager

  2. postgresql 9.5:een string proberen te splitsen in twee velden op basis van spaties

  3. In clausule versus OR-clausule qua prestaties

  4. Hoe mysqlimport te gebruiken om het resultaat van mysqldump --databases in te lezen