Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Autoincrement trong oracle với seq và trigger - câu lệnh sql không hợp lệ

Tôi nghi ngờ vấn đề là công cụ máy khách của bạn đang đọc mọi dấu chấm phẩy khi kết thúc một lệnh, khiến mã PL / SQL (yêu cầu dấu chấm phẩy làm dấu chấm dứt câu lệnh) được truyền không chính xác đến máy chủ.

Khi bạn xóa dấu chấm phẩy, câu lệnh được gửi đến máy chủ một cách chính xác, nhưng bạn sẽ nhận được một đối tượng không hợp lệ vì PL / SQL không chính xác.

Tôi đã sao chép sự cố của bạn trên SQL Fiddle. Sau đó, tôi thay đổi dấu kết thúc câu lệnh thành / thay vì ; và đã thay đổi mã để sử dụng dấu gạch chéo để thực thi từng câu lệnh và nó hoạt động mà không có lỗi:

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. cx_Oracle.DatabaseError:ORA-12170:TNS:Đã xảy ra thời gian chờ kết nối

  2. Truy xuất giá trị của một phần tử xml trong Oracle PL SQL

  3. ORA-12557 TNS:không tải được bộ điều hợp giao thức

  4. nhibernate, gọi hàm trong Oracle trả về con trỏ hệ thống

  5. Cách nhanh nhất để kiểm tra xem một số bản ghi trong một bảng cơ sở dữ liệu?