2012-12-08 12 views
15

के साथ किसी मौजूदा तालिका में अनुक्रम कॉलम कैसे जोड़ें I USERLOG नामक एक नई तालिका पिछले दृश्य से दो फ़ील्ड के साथ बनाई गई थी। तालिका में पहले से ही लगभग 9 000 रिकॉर्ड हैं। VIEW से लिया गया दो फ़ील्ड, यानी वेबलॉग_व्यू में आईपी (आईपी एड्रेस शामिल है), और WEB_LINK (यूआरएल शामिल हैं) शामिल हैं। इस कोड को मैं प्रयोग किया जाता है,रिकॉर्ड्स

CREATE TABLE USERLOG 
    AS 
    SELECT C_IP, WEB_LINK FROM weblog_views; 

मैं इस तालिका के लिए एक और स्तंभ जोड़ना चाहते हैं USER_ID है, जो होगा एक दृश्य 1 9000 के रिकॉर्ड के साथ शुरू प्रत्येक मौजूदा पंक्तियों के लिए एक विशिष्ट आईडी बनाने के लिए होते हैं कहा जाता है। मुझे इस हिस्से में मदद चाहिए। मैं ओरेकल एसक्यूएल डेवलपर का उपयोग कर रहा हूं: ओडीमिनर संस्करण 3.0.04। मैं ऑटो वेतन वृद्धि विकल्प का उपयोग करने की कोशिश की,

ALTER TABLE USERLOG 
    ADD USER_ID INT UNSIGNED NOT NULL AUTO_INCREMENT; 

लेकिन मैं इस बात से कोई त्रुटि मिलती है,

Error report: 
    SQL Error: ORA-01735: invalid ALTER TABLE option 
    01735. 00000 - "invalid ALTER TABLE option" 

तो, मैं वास्तव में किसी भी मदद कि मैं प्राप्त कर सकते हैं की सराहना करते हैं!

उत्तर

33

आप एक कॉलम तालिका

UPDATE userlog 
    SET user_id = user_id_seq.nextval 

में एक दृश्य

CREATE SEQUENCE user_id_seq 
    START WITH 1 
    INCREMENT BY 1 
    CACHE 20; 

अद्यतन डेटा जोड़ने के लिए

ALTER TABLE userlog 
    ADD(user_id number); 

बनाने यह मानते हुए कि आप user_id प्राथमिक होना चाहता हूँ की आवश्यकता होगी कुंजी, फिर आप प्राथमिक कुंजी बाधा

012 जोड़ देंगे
ALTER TABLE userlog 
    ADD CONSTRAINT pk_user_id PRIMARY KEY(user_id); 

आप अनुक्रम का उपयोग करने के लिए स्वचालित रूप से user_id जोड़ने के लिए जब आप एक INSERT (दूसरा विकल्प विशेष रूप से अपने INSERT बयान में user_id_seq.nextval संदर्भित करने के लिए किया जाएगा करना चाहते हैं, तो आप भी एक ट्रिगर

CREATE OR REPLACE TRIGGER trg_userlog_user_id 
    BEFORE INSERT ON userlog 
    FOR EACH ROW 
BEGIN 
    :new.user_id := user_id_seq.nextval; 
END; 
+0

की आवश्यकता होगी इसके लिए +1: मुझे इसे हराएं, जितना मैंने दिया होगा उससे बेहतर जवाब, और ट्रिगर में 'चयन ... दोहरी' वाक्यविन्यास का उपयोग न करें। – eaolson

संबंधित मुद्दे