केवल नई पंक्तियों के लिए डिफ़ॉल्ट अब () के साथ टाइमस्टैम्प कॉलम जोड़ें


112

मेरे पास एक मेज है जिसमें हजारों पंक्तियाँ हैं। चूंकि तालिका का निर्माण प्रारंभ में निर्मित_ट कॉलम के साथ नहीं किया गया था, इसलिए उनके निर्माण टाइमस्टैम्प को प्राप्त करने का कोई तरीका नहीं है। हालांकि यह महत्वपूर्ण है कि भविष्य की पंक्तियों के लिए टाइमस्टैम्प प्राप्त करना शुरू करें।

क्या कोई ऐसा तरीका है जो मैं डिफ़ॉल्ट मान के साथ एक टाइमस्टैम्प कॉलम जोड़ सकता हूं अब () ताकि यह पिछली पंक्तियों के मूल्यों को न केवल भविष्य के लोगों के लिए आबाद कर दे?

यदि मैं ALTERक्वेरी करता हूं , तो यह टाइमस्टैम्प के साथ सभी पंक्तियों को पॉप्युलेट करता है:

ALTER TABLE mytable ADD COLUMN created_at TIMESTAMP DEFAULT NOW()

जवाबों:


159

आपको डिफ़ॉल्ट के साथ कॉलम को जोड़ना होगा null, फिर कॉलम को डिफ़ॉल्ट में बदलना होगा now()

ALTER TABLE mytable ADD COLUMN created_at TIMESTAMP;
ALTER TABLE mytable ALTER COLUMN created_at SET DEFAULT now();

43

आप परिवर्तन तालिका के साथ डिफ़ॉल्ट नियम जोड़ सकते हैं,

ALTER TABLE mytable ADD COLUMN created_at TIMESTAMP DEFAULT NOW()

फिर सभी मौजूदा मौजूदा पंक्तियों को शून्य करने के लिए तुरंत सेट करें:

UPDATE mytable SET created_at = NULL

फिर इस बिंदु पर से DEFAULTप्रभावी होगा।


यह सिद्धांत में अच्छा है, हालांकि यह एक अद्यतन करने का भार वहन करता है जो ट्रिगर हो सकता है।
फिलिप कपलिंग

8
@Aurur: प्रस्तुत समाधान फिलिप जाने का रास्ता है। UPDATEइसकी आवश्यकता नही है। यदि आप किसी मौजूदा कॉलम में एक कॉलम डिफ़ॉल्ट जोड़ते हैं , तो पहले से मौजूद पंक्तियाँ प्रभावित नहीं होती हैं। यदि आप एक ही कमांड में कॉलम जोड़ते हैं और डिफॉल्ट करते हैं तो डिफॉल्ट केवल भरा हुआ है।
एरविन ब्रैंडस्टैटर

9

उदाहरण के लिए, मैं usersनीचे दी गई एक तालिका बनाऊंगा और dateडिफ़ॉल्ट मान नाम का एक कॉलम दूंगाNOW()

create table users_parent (
    user_id     varchar(50),
    full_name   varchar(240),
    login_id_1  varchar(50),
    date        timestamp NOT NULL DEFAULT NOW()
);

धन्यवाद


0

कुछ इस तरह की कोशिश करें: -

ALTER TABLE table_name ADD  CONSTRAINT [DF_table_name_Created] 
DEFAULT (getdate()) FOR [created_at];

table_nameअपनी तालिका के नाम के साथ प्रतिस्थापित करना।


1
ऐसे संपर्क का क्या लाभ है?
रूबों 7
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.