gpt4 book ai didi

sql - 有没有办法为数据库表的列强制执行一组值?

转载 作者:行者123 更新时间:2023-12-02 06:23:04 24 4
gpt4 key购买 nike

我有一个表格,其中一列我将指定实体的类型。实体只能是三种类型 - caption , image 或 comment ,因此我想确保表格列应该只接受这三个字符串之一。有没有办法将此约束放入 ms sql server 2008 中?

编辑:- 添加了数据库图以获得改进设计的提示。

设计:-1) Storyboard有很多张幻灯片,每张幻灯片可以有一个或多个标题或图片。

2)每个 Storyboard可以有一个或多个作者,以及零个或多个评论者。

3) 每个对象图像、幻灯片和标题(可能稍后会出现更多对象,如音频等)都可以对它们进行评论。这些评论可以由作者或审稿人给出。为了存储评论,我创建了一个评论表。

4)有必要记住幻灯片的顺序和幻灯片中图像的顺序,为此我使用了幻灯片和图像编号字段。

5)由于可以对任何对象进行评论,我需要为每个对象提供一个全局 ID,因为它们的引用将存储在评论表中。为了维护一个全局 ID,所有以名称结尾的字段GID 是使用 Default: NEWID() 生成的唯一标识符。

请提出对此数据库设计的改进建议。

Database Diagram

最佳答案

这是使用检查约束的方式:

create table #tableWithConstrainedColumn (
constrainThis varchar(20)
)

ALTER TABLE #tableWithConstrainedColumn ADD CONSTRAINT TempCheck
CHECK (constrainThis in ('caption', 'image', 'comment'))

-- this statement will succeed
insert into #tableWithConstrainedColumn
select 'caption'
-- this statement will fail
insert into #tableWithConstrainedColumn
select 'captions'

drop table #tableWithConstrainedColumn

您还可以定义数据类型,但我不建议这样做:http://msdn.microsoft.com/en-us/library/aa933121(v=sql.80).aspx

正如@Widor 刚刚推荐的那样,外键是执行此操作的最佳方式。

关于sql - 有没有办法为数据库表的列强制执行一组值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5649999/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com