1

我有两张桌子:

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)。这样做的最佳做法是什么?

  1. 使用自定义函数和检查约束
  2. 使 MIME_TYPE 列成为 MIME_TYPE 表的主键并对可能的值施加约束
  3. ?
4

2 回答 2

0

添加检查约束。例如,如果两个所需的 mime 类型的 ID 是 3 和 4:

ALTER TABLE EMAIL_QUEUE WITH CHECK
  ADD CONSTRAINT MIME_TYPE_CHECK CHECK (MIME_TYPE_ID IN (3,4))

ID 值不应更改,因此可以硬编码可接受的值。

于 2013-08-28T15:34:38.983 回答
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...
于 2013-08-28T17:44:41.307 回答