Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

ट्रिगर तालिका को नहीं पहचानता (किसी अन्य तालिका में सम्मिलित करने के लिए NEW.values ​​​​की सामग्री को कई पंक्तियों में विभाजित करने के लिए ट्रिगर)

यदि आप केवल स्ट्रिंग्स को तोड़ने की कोशिश कर रहे हैं, तो आप इस तरह से 1 और 2 को हार्डकोड कर सकते हैं और संख्या तालिका में 1 और 2 को पकड़ने की कोई आवश्यकता नहीं है क्योंकि उस तालिका को वर्तमान में 1 और 2 को शामिल करने के लिए हार्डकोड किया गया है।

SET @V = SUBSTRING_INDEX(SUBSTRING_INDEX(new.Vu, ' ', 1), ' ', -1),
    @U = SUBSTRING_INDEX(SUBSTRING_INDEX(new.Vu, ' ', 2), ' ', -1);

sqlfiddle

लेकिन फिर मैंने देखा कि आपको SUBSTRING_INDEX() को दो बार कॉल करने की भी आवश्यकता नहीं है..यह भी काम करता है

    SET @V = SUBSTRING_INDEX(new.Vu, ' ', 1),
        @U = SUBSTRING_INDEX(new.Vu,' ', -1);

sqlfiddle

अपडेट करें आपकी टिप्पणी देखने के बाद, मैंने देखा कि आप तालिका numbers क्यों बनाना चाहते थे? तो आपका ट्रिगर कुछ इस तरह होगा। पहले आप टेबल बनाएं numbers जिसमें पंक्तियाँ हैं जिनमें 1 से 10 तक n मान हैं (पंक्तियों में विभाजित करने के लिए फ़ील्ड की अधिकतम संख्या संभव है)। फिर आप numbers में से चुनें जहां n मान <=आपकी संख्या में फ़ील्ड की संख्या है। फिर फ़ील्ड को n स्थिति में लाने के लिए SUBSTRING_INDEX() फ़ंक्शन लागू करें।

create table numbers 
select 1 as n 
union select 2 
union select 3
union select 4
union select 5
union select 6
union select 7
union select 8
union select 9
union select 10;

CREATE TRIGGER `edit2` AFTER INSERT 
ON `table1` 
FOR EACH ROW BEGIN 

    INSERT INTO table2 (number,player,team,position)
    SELECT 
    SUBSTRING_INDEX(SUBSTRING_INDEX(NEW.number,' ',n),' ',-1) as number,
    NEW.player as player,
    SUBSTRING_INDEX(SUBSTRING_INDEX(NEW.team,', ',n),', ',-1) as team,
    SUBSTRING_INDEX(SUBSTRING_INDEX(NEW.position,' ',n),' ',-1) as position
    FROM
    numbers n
    WHERE LENGTH(NEW.number)
             - LENGTH(REPLACE(NEW.number,' ',''))
             + 1 >= n.n;

END

कार्रवाई में ट्रिगर देखने के लिए sqlfiddle




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. सर्वर या phpMyADMIN तक पहुंच के बिना SQL तालिका निर्यात करने का आसान तरीका

  2. SQL को गतिशील रूप से क्वेरी करते हुए PHP का उपयोग करके फ़ाइल को एक्सेल करने के लिए हार्डकोडिंग हेडर

  3. javafx में डेटाबेस से प्रदर्शित करने के लिए डेटा फ़िल्टर करना

  4. मायएसक्यूएल लाइक + पीएचपी स्प्रिंटफ

  5. सबक्वायरी में बाहरी क्वेरी का संदर्भ जॉइन