2016-04-26 60 views
0

我無法弄清楚如何將數據插入到具有不同表格序列的記錄中的新表格中。具體來說,我有一個表叫customers_f,我試圖做沿着將序列值插入到新表中ORACLE

INSERT INTO customers_f(billing_account_num) 
VALUES(billing_account_num.CURRVAL); 

這不是工作看到,因爲該序列涉及到bill_tos_f表線的東西。我如何能夠將的值從bill_tos_f放到我的'customers_f'表中?

下面我發佈了來自bill_tos_f的信息,包括表本身,處理billing_account_num的順序以及來自bill_tos_f的插入。提前致謝!

CREATE TABLE bill_tos_f 
(
    billing_account_num NUMBER(5) 
    CONSTRAINT bill_tos_f_bill_to_num_pk PRIMARY KEY, 
    bill_to_first_name VARCHAR2(25) 
    CONSTRAINT bill_tos_f_bill_first_nn NOT NULL, 
    bill_to_middle_name VARCHAR2(25), 
    bill_to_last_name VARCHAR2(25) 
    CONSTRAINT bill_tos_f_bill_last_nn NOT NULL, 
    bill_to_street VARCHAR2(30) 
    CONSTRAINT bill_tos_f_bill_street_nn NOT NULL, 
    bill_to_city VARCHAR2(30) 
    CONSTRAINT bill_tos_f_bill_city_nn NOT NULL, 
    bill_to_state CHAR(2) 
    CONSTRAINT bill_tos_f_bill_state_nn NOT NULL, 
    bill_to_zip CHAR(5) 
    CONSTRAINT bill_tos_f_bill_zip_nn NOT NULL, 
    bill_to_country CHAR(3) 
); 

CREATE SEQUENCE bill_tos_f_bill_acc_num_seq 
INCREMENT BY 1 
START WITH 52315 
MAXVALUE 99999 
NOCYCLE 
NOCACHE; 

INSERT INTO bill_tos_f(billing_account_num, bill_to_first_name, bill_to_middle_name, bill_to_last_name, bill_to_street, bill_to_city, bill_to_state, bill_to_zip, bill_to_country) 
VALUES(bill_tos_f_bill_acc_num_seq.NEXTVAL, 'mike', 'row', 'smith', '983 Circle Point', 'Atlanta', 'GA', '3825', 'USA'); 
+2

您是否收到任何錯誤?它是什麼?如果不是,你會得到什麼結果?順便說一句,序列,不像觸發器,「不」與表相關。他們是獨立的對象 – Hawk

+0

@Hawk它說當它 –

+0

您是否製作了序列'billing_account_num'序列不存在? – Hawk

回答

0

在Oracle中,序列並不依賴於列,它們是獨立的對象。以下SQL語句應該適合您。

INSERT INTO customers_f(billing_account_num) 
    VALUES(bill_tos_f_bill_acc_num_seq.CURRVAL); 

但是,如果您可以使用PLSQL塊,則會更好。

DECLARE 
    v_seqval NUMBER; 
BEGIN 
    v_seqval := bill_tos_f_bill_acc_num_seq.NEXTVAL; 

    INSERT INTO bill_tos_f(billing_account_num, bill_to_first_name, bill_to_middle_name, bill_to_last_name, bill_to_street, bill_to_city, bill_to_state, bill_to_zip, bill_to_country) 
    VALUES(v_seqval, 'mike', 'row', 'smith', '983 Circle Point', 'Atlanta', 'GA', '3825', 'USA'); 

    INSERT INTO customers_f(billing_account_num) 
    VALUES(v_seqval); 

END; 
+2

'bill_tos_f_bill_acc_num_seq.CURRVAL'將不起作用,除非'bill_tos_f_bill_acc_num_seq.NEXTVAL'爲先前在同一個會話中運行 – Hawk