是如同 shoppo0505 所说,一个枚举建一个表,然后进行外键约束吗?
表格 , 什么枚举 不能做
虽然象5楼说的, 可以通过表外键约束来实现枚举类型的定义 但还是不建议在数据库中实现, 这部分用程序控制比较好了, 比如, 你一个超出枚举范围的项, 本来在程序中就可以直接判断的, 为啥还要等传到数据库插入时, 让服务器来判断次, 然后返回给程序? 程序到时候不一样需要处理么, 对数据来说, 它走了一堆弯路才知道走错了, 对服务器来说, 也加重了它的负担 就比如ABC三地连线呈三角形, 你直接可以走直线从A--B, 但是你偏偏要走 A--C--B , 弯远啦
use AdventureWorks2012; GO --create exec sp_addtype enum ,'char(1)', 'not null' go create table t ( a enum default('F') check(a in ('T','F')), ) go --drop drop table t; go exec sys.sp_droptype enum; go
[quote=引用 5 楼 shoppo0505 的回复:] 枚举的类型完全可以用SQL表格来定义。 像你这个例子,需要3个表格来定义。 一个表格保存枚举类型1,数据比如: 1, A1 2,A2 … 一个表格保存枚举类型2,数据比如: 1, B1 2, B2 … 第三个表格的数据和你自己题目中的一样, Id是PK,B,C列用外键约束,然后表格上再添加constraint,来约束B,C列的允许值(不允许值)
枚举的类型完全可以用SQL表格来定义。 像你这个例子,需要3个表格来定义。 一个表格保存枚举类型1,数据比如: 1, A1 2,A2 … 一个表格保存枚举类型2,数据比如: 1, B1 2, B2 … 第三个表格的数据和你自己题目中的一样, Id是PK,B,C列用外键约束,然后表格上再添加constraint,来约束B,C列的允许值(不允许值)
枚举应该放到程序里去做,一些数据的限制也应该放在程序中去限制
34,575
社区成员
254,583
社区内容
加载中
试试用AI创作助手写篇文章吧