约束
添加
示例
ALTERTABLEstuInfo
ADDCONSTRAINTPK_stuNoPRIMARYKEY(stuNo)
ALTERTABLEstuInfo
ADDCONSTRAINTUQ_stuIDUNIQUE(stuID)
添加默认约束(如果地址不填,默认为“地址不详”):
ALTERTABLEstuInfo
ADDCONSTRAINTDF_stuAddressDEFAULT('地址不详')FORstuAddress
添加检查约束(要求年龄只能在15~40岁之间)
ALTERTABLEstuInfo
ADDCONSTRAINTCK_stuAgeCHECK(stuAgeBETWEEN15AND40)
添加外键约束(主表stuInfo和从表stuGrade建立关系,关联字段为stuNo):
ALTERTABLEstuGrade
ADDCONSTRAINTFK_stuNo
FOREIGNKEY(stuNo)REFERENCESstuInfo(stuNo)
GO
删除
语法
ALTERTABLE表名
示例:
删除stuInfo表中地址默认约束的语句:
ALTERTABLEstuInfo
DROPCONSTRAINTDF_stuAddress
删除外键约束注意事项:
对于存在外键约束的表,如果进行删除非空的外键,可能会出现错误。
a.如果在FOREIGNKEY约束的列中输入非NULL值,则此值必须在被引用的列中存在,否则将返回违反外键约束的错误信息。
b.FOREIGNKEY约束应用于前面所讲的列,除非指定了源列。
c.FOREIGNKEY约束仅能引用位于同一服务器上的同一数据库中的表。数据库间的引用完整性必须通过触发器实现。有关更多信息,请参见CREATETRIGGER。
d.FOREIGNKEY可以引用同一表中的其它列(自引用)。
e.列级FOREIGNKEY约束的REFERENCES子句仅能列出一个引用列,且该列必须与定义约束的列具有相同的数据类型。
f.表级FOREIGNKEY约束的REFERENCES子句中引用列的数目必须与约束列列表中的列数相同。每个引用列的数据类型也必须与列表中相应列的数据类型相同。
e.如果timestamp类型的列是外键或被引用键的一部分,则不能指定CASCADE。
g.可以在相互间具有引用关系的表上组合使用CASCADE和NOACTION。如果SQLServer遇到NOACTION,将终止执行语句并回滚相关的CASCADE操作。当DELETE语句导致CASCADE和NOACTION组合操作时,在SQLServer检查NOACTION操作之前将执行所有CASCADE操作。
h.一个表最多可包含253个FOREIGNKEY约束。
i.对于临时表不强制FOREIGNKEY约束。
j.每个表在其FOREIGNKEY约束中最多可以引用253个不同的表。
k.FOREIGNKEY约束只能引用被引用表的PRIMARYKEY或UNIQUE约束中的列或被引用表上UNIQUEINDEX中的列。
INSERT和UPDATE规范类别
删除规则
指定当数据库的最终用户尝试删除某一行,而该行包含外键关系所涉及的数据时所发生的情况。如果设置为:
a.无操作显示一条错误信息,告知用户不允许执行该删除操作,DELETE将被回滚。
c.设置空如果表的所有外键列都可接受空值,则将该值设置为空。仅适用于SQLServer2005。
d.设置默认值如果表的所有外键列均已定义默认值,则将该值设置为列定义的默认值。仅适用于SQLServer2005。
更新规则
指定当数据库的用户尝试更新某一行,而该行包含外键关系所涉及的数据时所发生的情况。如果设置为:
a.无操作显示一条错误信息,告知用户不允许执行该删除操作,DELETE将被回滚。
c.设置空如果表的所有外键列都可接受空值,则将该值设置为空。仅适用于SQLServer2005。
e.设置默认值如果表的所有外键列均已定义默认值,则将该值设置为列定义的默认值。仅适用于SQLServer2005。
附件列表
词条内容仅供参考,如果您需要解决具体问题
(尤其在法律、医学等领域),建议您咨询相关领域专业人士。