社区
疑难问题
帖子详情
数据表如何实现这样的约束???
TrueYi
2008-01-31 07:04:40
现有表Product(ProductId,UnitId) 和表Unit (UnitId,UnitName)
表Product的外键UnitId为外键
现在实现在:
在插入Product表数据时能字段UnitId不约束,但删除Unit表中的记录时,如果有被Product表引用过的就约束
...全文
117
5
打赏
收藏
数据表如何实现这样的约束???
现有表Product(ProductId,UnitId) 和表Unit (UnitId,UnitName) 表Product的外键UnitId为外键 现在实现在: 在插入Product表数据时能字段UnitId不约束,但删除Unit表中的记录时,如果有被Product表引用过的就约束
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Free_Windy
2008-01-31
打赏
举报
回复
如果为楼主在三楼所讲的需求,即设置Insert 和 Update强制关系就可以了.可以插入NULL
liangCK
2008-01-31
打赏
举报
回复
使用
instead of 触发器.
TrueYi
2008-01-31
打赏
举报
回复
或者可以将我有问题理解为
如果在Product表中的UnitId字段允许插入空值,如果插入非空值就要受Unit表的主键约束.
liangCK
2008-01-31
打赏
举报
回复
使用触发器来代替你的约束看看.
liangCK
2008-01-31
打赏
举报
回复
级联引用完整性约束
当用户试图删除或更新外键所指向的键时,级联引用完整性约束使您得以定义 Microsoft® SQL Server™ 2000 所采取的操作。
CREATE TABLE 和 ALTER TABLE 语句的 REFERENCES 子句支持 ON DELETE 和 ON UPDATE 子句:
[ ON DELETE { CASCADE | NO ACTION } ]
[ ON UPDATE { CASCADE | NO ACTION } ]
如果没有指定 ON DELETE 或 ON UPDATE,则默认为 NO ACTION。NO ACTION 指定的行为与 SQL Server 的早期版本中发生的行为相同。
ON DELETE NO ACTION
指定如果试图删除某行,而该行含有由其它表的现有行中的外键所引用的键,则产生错误并回滚 DELETE。
ON UPDATE NO ACTION
指定如果试图更新某行中的键值,而该行含有由其它表的现有行中的外键所引用的键,则产生错误并回滚 UPDATE。
CASCADE 允许在表间级联键值的删除或更新操作,这些表的外键关系可追溯到执行修改的表。不能为任何具有 timestamp 列的外键和主键指定 CASCADE。
ON DELETE CASCADE
指定如果试图删除某行,而该行含有由其它表的现有行中的外键所引用的键,则也将删除所有包含那些外键的行。如果在目标表上也定义了级联引用操作,则对从那些表中删除的行同样采取指定的级联操作。
ON UPDATE CASCADE
指定如果试图更新某行中的键值,而该行的键值由其它表的现有行中的外键所引用,则所有外键值也将更新成为该键指定的新值。如果在目标表上也定义了级联引用操作,则对在那些表中更新的键值同样采取指定的级联操作。
级联引用操作的示例可以基于 Northwind 中 Products 表上的 FK_Products_Suppliers 约束。该约束建立了从 Products 表中的 SupplierID 列到 Suppliers 表中的 SupplierID 主键列的外键关系。如果为约束指定了 ON DELETE CASCADE,则删除 SupplierID = 1 的 Suppliers 表中的行时也将删除 SupplierID = 1 的 Products 表中的三行。如果为该约束指定了 ON UPDATE CASCADE,则更新 Suppliers 表中从 1 到 55 的 SupplierID 值也将更新 Products 表中 SupplierID 值当前等于 1 的三行的 SupplierID 值。
不能为具有 INSTEAD OF 触发器的表指定级联操作。为表定义级联操作后,就不能向该表添加 INSTEAD OF 触发器。
数据表
的
约束
数据表
的
约束
为防止错误的数据被插入到
数据表
,MySQL中定义了一些维护数据库完整性的规则;这些规则常称为表的
约束
。常见
约束
如下:
约束
条件 说明 PRIMARY KEY 主键
约束
,用于唯一标识对应的记录 FOREIGE KEY 外键
约束
NOT NULL 非空
约束
UNIQUE 唯一性
约束
DEFAULT 默认值
约束
,用于设置字段的默认值 以上五种
约束
条件针对表中字段进行限制从而保证
数据表
中数据的正确性和唯一性。换句话说,表的
约束
实...
如何删除表的外键
约束
?
@R星校长 删除表的外键
约束
我们曾在第一章中讲过外键的作用,以及如何创建一个表的外键。建立了外键我们就建立起了两张表的关联关系,那如果我想删除主表呢?为了确保数据库的正确性,我们必须先解除两个表之间的关联关系,那就是删除外键
约束
啦!让我们先来看看删除外键
约束
的语法规则。 语法规则为: ALTER TABLE 表名 DROP FOREIGN KEY 外键
约束
名; 。 举个例子: 我们先建立了一个主表country,表结构如下图所示: 然后建立一个有外键
约束
的子表Mall_products2,让它的键c.
数据库中的数据完整性
约束
这篇文章讲的是数据库中的数据完整性
约束
,如有错误或不当之处,还望各位大神批评指正。 什么是数据完整性
约束
? 数据完整性:存储在数据库中的所有数据值均正确的状态。它是应防止数据库中存在不符合语义规定的数据和防止因错误信息的输入输出造成无效操作或错误信息而提出的。 数据完整性分为四类: 1. 实体完整性(实体完整性是对关系中的记录唯一性,也就是主键的
约束
。准确地说,实体完整性是指关...
PostgreSQL 中如何处理数据的唯一性
约束
?
在深入探讨如何处理唯一性
约束
之前,咱们得先搞清楚啥是唯一性
约束
。简单来说,唯一性
约束
就是确保表中的某一列或者某几列的数据组合在整个表中是独一无二的,不会出现重复的值。打个比方,就像每个人的身份证号码,在全国范围内都是唯一的,不能有两个人拥有相同的身份证号。在数据库中,比如一个用户表中的用户名列,我们通常希望每个用户名都是唯一的,这样才能准确地识别和区分不同的用户。唯一性
约束
就像是一个严格的守门员,坚决不让重复的数据进入球门(
数据表
),从而保证数据的干净和准确。这是最常见也是最直接的方法。
什么是外键
约束
?外键
约束
下的多表操作是什么?
MySQL 外键
约束
(FOREIGN KEY)是表的一个特殊字段,经常与主键
约束
一起使用。对于两个具有关联关系的表而言,相关联字段中主键所在的表就是主表(父表),外键所在的表就是从表(子表)。外键用来建立主表与从表的关联关系,为两个表的数据建立连接,
约束
两个表中数据的一致性和完整性。比如,一个水果摊,只有苹果、桃子、李子、西瓜等 4 种水果,那么,你来到水果摊要买水果就只能选择苹果、桃子、李子和西瓜,其它的水果都是不能购买的。
疑难问题
22,298
社区成员
121,733
社区内容
发帖
与我相关
我的任务
疑难问题
MS-SQL Server 疑难问题
复制链接
扫一扫
分享
社区描述
MS-SQL Server 疑难问题
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章