การลบข้อมูลภายในตารางทั้งหมด โดยโครงสร้างตารางยังคงอยู่ SQL Truncate table (แอสคิวแอล ทรันเครท เทเบิ้ล)

SQL Knowledge ทั้ง sql มาตรฐาน หลักการออกแบบฐานข้อมูล ความสัมพันธ์ของ ตาราง Mysql , PGSQL, Oracle, MSSQL

Moderator: mindphp, ผู้ดูแลกระดาน

ภาพประจำตัวสมาชิก
pprn
PHP Super Hero Member
PHP Super Hero Member
โพสต์: 565
ลงทะเบียนเมื่อ: 02/07/2018 10:45 am

การลบข้อมูลภายในตารางทั้งหมด โดยโครงสร้างตารางยังคงอยู่ SQL Truncate table (แอสคิวแอล ทรันเครท เทเบิ้ล)

โพสต์ที่ยังไม่ได้อ่าน โดย pprn »


  • คำสั่ง SQL Truncate table
    เป็นการลบหรือ reset ข้อมูลภายในตารางข้อมูล (table) ทั้งหมด ทำให้ข้อมูลภายในตารางไม่มีอยู่เลย ซึ่งทำให้
โครงสร้างตารางข้อมูล (table) เหมือน ก่อนเริ่มใส่ข้อมูล ทำให้สามารถ insert ข้อมูลใหม่ได้ จะทำการ reset auto_increment ให้เริ่มนับใหม่ด้วย คำสั่ง

SQL Truncate table จะแตกต่างจาก SQL Drop table ซึ่งจะทำการลบข้อมูลภายใน ตารางข้อมูล (table) ทั้งหมด รวมถึงโครงสร้างของตารางข้อมูล (table)

ด้วย การใช้งานใหม่จำเป็นต้องสร้างตารางข้อมูล (create table) ใหม่อีกครั้ง

  • คำสั่ง SQL Truncate table จะทำหน้าที่เหมือนกับคำสั่ง DELETE โดยไม่ใช้คำสั่ง WHERE และเร็วกว่าการใช้คำสั่ง DELETE

  • คำเตือน : หลังจากการทำ Truncate table แล้ว ไม่สามารถเรียกข้อมูลภายใน table กลับมาใหม่ได้ (roll back)


รูปแบบการเขียน

คำสั่ง Truncate table ตามด้วยชื่อตารางข้อมูล (table) ที่ต้องการลบ
[code]TRUNCATE TABLE table_name;[/code]


ตัวอย่าง

ตารางชื่อ PRODUCTS
ข้อมูลภายในตาราง PRODUCTS
ข้อมูลภายในตาราง PRODUCTS
table.JPG (25.81 KiB) Viewed 5614 times
โค้ด คำสั่ง TRUNCATE TABLE PRODUCTS
[code]TRUNCATE TABLE PRODUCTS ;[/code]


ผลลัพธ์
ผลลัพธ์ที่ได้จากการ Truncate table ตาราง PRODUCTS
ผลลัพธ์ที่ได้จากการ Truncate table ตาราง PRODUCTS
table 1.JPG (14.42 KiB) Viewed 5604 times
ผลลัพธ์ที่ได้ จะพบว่าข้อมูลบรรทัดเป็น 0
[code]SQL> SELECT * FROM PRODUCTS;
Empty set (0.00 sec)[/code]



_____________________________________________________________________________________________
Auto Increment (auto_increment) เป็นตัวเลขที่จะสามารถเพิ่มค่าขึ้นโดยอัตโนมัติในทุกครั้งที่มีการ Insert ข้อมูล
_____________________________________________________________________________________________



----------------------------------------------------------------------------------------------------------------------------------------------------------------
_____________________________________________________________________________________________
บทความนี้เเป็นบทความที่จัดทำขึ้นเพื่อเนะนำเครื่องมือช่วยสำหรับนักพัฒนา SQL ซึ่งเป็นความรู้พื้นฐานในการพัฒนา phpMyadmin ต่อไป เเละขอเเนะนำความรู้ที่เกี่ยวข้องกับโดยสามารถศึกษาได้จากบทเรียน SQL ได้ที่นี่ เพื่อเพิ่มความเข้าใจในการใช้งานเครื่องมือต่างๆ ค่ะ
_____________________________________________________________________________________________

----------------------------------------------------------------------------------------------------------------------------------------------------------------
ภาพประจำตัวสมาชิก
chakirin.bfds
PHP Super Hero Member
PHP Super Hero Member
โพสต์: 783
ลงทะเบียนเมื่อ: 22/12/2020 10:19 am

Re: การลบข้อมูลภายในตารางทั้งหมด โดยโครงสร้างตารางยังคงอยู่ SQL Truncate table (แอสคิวแอล ทรันเครท เทเบิ้ล)

โพสต์ที่ยังไม่ได้อ่าน โดย chakirin.bfds »

TRUNCATE เป็นการลบข้อมูลทั้งหมดออกจากตาราง แต่โครงสร้างตารางและคอลัมน์ข้อ จำกัด ดัชนีและอื่น ๆ ยังคงอยู่ ซึ่งมีความแตกต่างกับ Delete คือ
1 หากต้องการลบข้อมูลที่มีขนาดใหญ่ คำสั่ง TRUNCATE จะมีประสิทธิภาพมากกว่า
2 TRUNCATE ไม่สามารถลบข้อมูลที่มี Foreign key contraint ได้
3 การยกเลิกคำสั่ง(Roll back) TRUNCATE จะทำได้เฉพาะใน Transaction เท่านั้น

การเรียกใช้คำสั่ง

โค้ด: เลือกทั้งหมด

TRUNCATE TABLE table_name 
ทดลองนำไปใช้กับ openerp

โค้ด: เลือกทั้งหมด

       
        try:
            cr.execute("TRUNCATE TABLE my_table") #ใช้ cr.ในการเชื่อมต่อข้อมูลตาราง และ execute เป็นการเรียกใช้คำสั่ง sql ซึ่งในที่นี้ เรียกใช้คำสั่ง(TRUNCATE)การลบ-ข้อมูลในตาราง my_table
            _logger.debug('--delete data in my_table---)
        except Exception as e:
            raise osv.except_osv("Error", "Exception during delete  data " + str(e))
ตอบกลับโพส
  • Similar Topics
    ตอบกลับ
    แสดง
    โพสต์ล่าสุด

ผู้ใช้งานขณะนี้

สมาชิกกำลังดูบอร์ดนี้: ไม่มีสมาชิกใหม่ และบุคลทั่วไป 39