sql: บันทึกการแปลงตาราง
Submitted by wd on Sat, 2007-08-18 17:16
ความรู้ 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
- Login or register to post comments








Recent comments
11 weeks 2 days ago
11 weeks 6 days ago
15 weeks 1 day ago
15 weeks 1 day ago
19 weeks 22 hours ago
19 weeks 2 days ago
19 weeks 2 days ago
19 weeks 2 days ago
19 weeks 3 days ago
19 weeks 3 days ago