हर किसी ने कहा की तरह, वहाँ वास्तव में काउंटर वापस ले जाने के लिए जब आप एक पंक्ति को हटा एक की जरूरत नहीं है। हालांकि आप truncate
एक तालिका कर सकते हैं जो सभी तालिका पंक्तियों को हटा देगा और काउंटर को रीसेट कर देगा।
आप कर सकते हैं नहीं truncate
तालिका से Foreign Key Constraints
उस पर लागू किया (truncate
जो केवल सभी पंक्तियों को हटा देता है, जबकि ऑटो वेतन वृद्धि काउंटर रखने delete
के रूप में ही नहीं है।)।
इसलिए, foreign key constrains
का उपयोग करते समय, MySQL आपको उस तालिका को छूने से रोक सकता है जिसमें foreign key constraints
लागू होता है।
आप जो चाहते हैं उसे प्राप्त करने के लिए आप निम्न चरणों का पालन कर सकते हैं, लेकिन सावधान रहें, आपके डेटा अखंडता का खतरा हो सकता है। मैं केवल इसे अपने परीक्षण उद्देश्यों के लिए उपयोग करता हूं।
संपादित DatabaseSeeder
वर्ग (जो app/database/seeds/DatabaseSeeder.php
पर उपलब्ध है) इस प्रकार है: (इस मामले, जो app/database/seeds/UserTableSeeder.php
पर बनाया जाना चाहिए में उदाहरण के लिए, UserTableSeeder
)
<?php
class DatabaseSeeder extends Seeder {
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
Eloquent::unguard();
// Disable Foreign key check for this connection before running seeders
DB::statement('SET FOREIGN_KEY_CHECKS=0;');
$this->call('UserTableSeeder');
// ...
// FOREIGN_KEY_CHECKS is supposed to only apply to a single
// connection and reset itself but I like to explicitly
// undo what I've done for clarity
DB::statement('SET FOREIGN_KEY_CHECKS=1;');
}
}
अब टेबल बोने की मशीन कक्षाओं कर सकते हैं काट-छांट कॉल तालिका (रों) इस प्रकार है:
<?php
class UserTableSeeder extends Seeder {
public function run()
{
// Truncate the table.
DB::table('users')->truncate();
// The auto-increment has been reset.
// Now we can start adding users.
User::create(
array(
'email' => '[email protected]',
'password' => Hash::make('test')
)
);
}
}
स्रोत
2014-06-24 20:10:57
रिकॉर्ड हटाने पर ऑटो वृद्धि को बदलने की कोई आवश्यकता नहीं है। – SamV
ठीक है जब मेरे पास 15 उपयोगकर्ता हैं और मैं पिछले 5 को हटा दूंगा तो नए उपयोगकर्ता को 16 की आईडी सौंपी जाएगी, लेकिन मैं 10 – aimiliano
से शुरू करना चाहता हूं, आप इसे फिर से शुरू क्यों करना चाहते हैं? इसके लिए कोई कार्यात्मक आवश्यकता नहीं है।यदि आप वास्तव में ऐसा करना चाहते हैं, तो आपको इसे कच्चे एसक्यूएल के साथ पहले से ही करना होगा। –