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

केकपीएचपी 3:अस्थायी एसक्यूएल टेबल्स के लिए सर्वोत्तम अभ्यास

इसे नहीं को बताने की कोई आवश्यकता नहीं है तालिका की तलाश करें, वास्तव में आप जो करना चाहते हैं उसके विपरीत है, यह देखते हुए कि आप अंततः इसे एक्सेस करना चाहते हैं।

टेबल क्लास को मूल रूप से हमेशा की तरह कॉन्फ़िगर किया जाना चाहिए, और एप्लिकेशन को एक्सेस करने से पहले आपको अस्थायी डेटाबेस टेबल बनाना चाहिए। आप या तो कच्चे टेबल निर्माण एसक्यूएल को मैन्युअल रूप से लिख सकते हैं, या इसे \Cake\Database\Schema\TableSchema से उत्पन्न कर सकते हैं उदाहरण, जो अस्थायी तालिकाओं का समर्थन करता है।

आप या तो स्पष्ट रूप से स्कीमा ऑब्जेक्ट बना सकते हैं:

$schema = new \Cake\Database\Schema\TableSchema('temp_items');
$schema
    ->addColumn('id', ['type' => 'integer'])
    ->addColumn('con', ['type' => 'string', 'length' => 255, 'null' => false])
    ->addConstraint('primary', ['type' => 'primary', 'columns' => ['id']])
    ->setTemporary(true);

$TableObject->setSchema($schema);

या टेबल ऑब्जेक्ट को अपने फ़ील्ड परिभाषा सरणी का उपयोग करके इसे उत्पन्न करने दें:

$TableObject->setSchema($TableObject->fields);
$schema = $TableObject->getSchema()->setTemporary(true);

फिर आप स्कीमा ऑब्जेक्ट से तालिका निर्माण SQL उत्पन्न कर सकते हैं और इसे डेटाबेस के विरुद्ध चला सकते हैं:

$connection = $TableObject->getConnection();
$queries = $schema->createSql($connection);

$connection->transactional(
    function (\Cake\Database\Connection $connection) use ($queries) {
        foreach ($queries as $query) {
            $stmt = $connection->execute($query);
            $stmt->closeCursor();
        }
    }
);

$queries तालिका बनाने के लिए आवश्यक SQL कमांड की एक सरणी होगी, कुछ की तर्ज पर:

[
    'CREATE TEMPORARY TABLE `temp_items` (
        `id` INTEGER AUTO_INCREMENT,
        `con` VARCHAR(255) NOT NULL,
        PRIMARY KEY (`id`)
    )'
]

ध्यान दें कि यदि आप तालिका ऑब्जेक्ट को स्कीमा निर्दिष्ट नहीं करते हैं, तो आप कैशिंग समस्याओं का सामना कर सकते हैं, क्योंकि जब आप तालिका की परिभाषा बदलते हैं और कैशे साफ़ नहीं करते हैं तो कैश्ड स्कीमा अब मेल नहीं खाएगा।

यह भी देखें




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:'कहां क्लॉज' में अज्ञात कॉलम 'स्मिथ'

  2. मैं क्वेरी कैसे कर सकता हूं जहां लार्वेल में जेसन कॉलम?

  3. सामान्य त्रुटि:क्लास कंस्ट्रक्टर को कॉल नहीं कर सका'

  4. एमवीसी 5 में स्टोर प्रक्रिया वापस मूल्य नहीं है

  5. MySQL अनुक्रमणिका उपयोग क्वेरी अनुकूलन