SQL Server 2008 มีชนิดข้อมูลเหมือน MySQL enum
หรือไม่
SQL Server 2008 มีชนิดข้อมูลเหมือน MySQL enum
หรือไม่
คำตอบ:
มันไม่ได้ มีความหมายที่คลุมเครือ:
mycol VARCHAR(10) NOT NULL CHECK (mycol IN('Useful', 'Useless', 'Unknown'))
ทางออกที่ดีที่สุดที่ฉันพบในนี้คือการสร้างตารางการค้นหาที่มีค่าที่เป็นไปได้เป็นคีย์หลักและสร้างคีย์ต่างประเทศไปยังตารางการค้นหา
ตารางการค้นหา IMHO เป็นวิธีที่จะไปด้วยความสมบูรณ์ของการอ้างอิง แต่ถ้าคุณหลีกเลี่ยง "Evil Magic Numbers" โดยทำตามตัวอย่างเช่นอันนี้: สร้าง enum จากตารางค้นหาฐานข้อมูลโดยใช้ T4
มีความสุข!
CREATE FUNCTION ActionState_Preassigned()
RETURNS tinyint
AS
BEGIN
RETURN 0
END
GO
CREATE FUNCTION ActionState_Unassigned()
RETURNS tinyint
AS
BEGIN
RETURN 1
END
-- etc...
ในกรณีที่ประสิทธิภาพสำคัญยังคงใช้ค่าฮาร์ด
พบแนวทางที่น่าสนใจนี้เมื่อฉันต้องการใช้ enums ใน SQL Server
วิธีการที่กล่าวถึงด้านล่างในลิงค์ค่อนข้างน่าสนใจเนื่องจากความต้องการฐานข้อมูลทั้งหมดของคุณสามารถทำได้ด้วย 2 โต๊ะกลาง