sql: บันทึกการแปลงตาราง

ความรู้ 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

 

Thai Search

Google Search

Custom Search

Theme

Who's online

There are currently 0 users and 7 guests online.