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
- 1392 reads







Recent comments
18 weeks 1 day ago
37 weeks 16 hours ago
47 weeks 2 days ago
1 year 9 weeks ago
1 year 13 weeks ago
1 year 13 weeks ago
1 year 13 weeks ago
1 year 13 weeks ago
1 year 14 weeks ago
1 year 14 weeks ago