我有两张桌子:
EMAIL_QUEUE
ID identity,
MIME_TYPE_ID int foreign key MIME_TYPE(id)
etc...
MIME_TYPE
ID identity,
MIME_TYPE varchar(300),
etc...
MIME_TYPE目前未声明为唯一身份。我想在我的EMAIL_QUEUE表上设置一个约束,以便它只接受某些mime类型(text / plain和text / html)。这样做的最佳做法是什么?
答案 0 :(得分:1)
添加检查约束。例如,如果两个所需的mime类型的ID是3和4:
ALTER TABLE EMAIL_QUEUE WITH CHECK
ADD CONSTRAINT MIME_TYPE_CHECK CHECK (MIME_TYPE_ID IN (3,4))
ID值不应该改变,因此可以硬编码可接受的值。
答案 1 :(得分:0)
这也可以通过一个附加表来解决
-- this table is unchanged
MIME_TYPE
ID identity,
MIME_TYPE varchar(300),
etc...
-- additional table, which should contain ids of the 'text/plain' and 'text/html'
EMAIL_QUEUE_MIME_TYPE
ID int -- PK and FK to MIME_TYPE(id)
-- in this table MIME_TYPE_ID should be redirected to new table
EMAIL_QUEUE
ID identity,
MIME_TYPE_ID int foreign key EMAIL_QUEUE_MIME_TYPE(id)
etc...