sql: บันทึกการแปลงตาราง
Submitted by wd on Sat, 2007-08-18 17:16
Topic:
ความรู้ sql น้อยมาก ขออนุญาตบันทึกเอาไว้ดูครับ
ต้องการแปลงโครงสร้างตารางคือ
สมมุติว่ามีตาราง phone มีโครงสร้างดังนี้
CREATE TABLE phone ( phoneid SERIAL, custid VARCHAR(10), name VARCHAR(128), phone VARCHAR(64), cat VARCHAR(64), rem TEXT );
เมื่อใส่ข้อมูลแล้ว ต้องการเปลี่ยนสดมถ์ custid เป็นข้อมูลชนิด integer
พบว่าไม่สามารถเปลี่ยนตรง ๆ โดยใช้คำสั่ง ALTER ได้
แปลงโดยใช้ตาราง temp เป็นตัวทด
ใช้เงื่อนไข CASE บวกฟังก์ชั่น CAST ในการแปลง
CREATE TABLE temp AS SELECT phoneid, CASE WHEN custid='' THEN 0 ELSE CAST(custid AS INT) END AS custid, name, phone, cat FROM phone;
แล้วจึงเอาตารางใหม่ไปทับตารางเก่า
DROP TABLE phone; SELECT * INTO phone FROM temp; DROP TABLE temp;
หรือ
DROP TABLE phone; ALTER TABLE temp RENAME TO phone;
ทดลองกับเดเบียน etch, postgresql-8.1, phppgadmin-4.0.1
- Printer-friendly version
- Log in or register to post comments
- 3718 reads
Recent comments