SQL 同一张表中几个字段间的约束怎么实现?

在SQLServer2000中,有一张表叫作A表,其中的字段有ID,Name(商品名),price(单价),Num(数量),TotalPrice(金额)。我想加一个约束:... 在SQL Server 2000 中,有一张表叫作A表,其中的字段有ID,Name(商品名),price(单价),Num(数量),TotalPrice(金额)。我想加一个约束:金额=单价×数量,不管是插入记录还是修改字段都要受到此约束的影响,请问怎么实现?请给出具体代码或者详细步骤。
我没学过约束,像check这样的,也不知道怎么用,可以解释一下么?
check add 只是对插入受约束是吗?可不可以改为这样:check add,update

如果不是在同一张表中,即:表A中没有TotalPrice(金额)字段,而表B中有B_TotalPrice(金额)字段,表B的外键B_ID 是表A的主键ID,约束条件为 B_TotalPrice = (表A中的)price×(表A中的)Num,这又怎么实现呢?
展开
 我来答
gyckey
2009-04-27 · TA获得超过122个赞
知道小有建树答主
回答量:83
采纳率:0%
帮助的人:113万
展开全部
下面的语句就可实现你要的功能:

alter table a
with check add check not for replication
(totalprice=price*num)

with check 表示对已存在的数据进行新增的约束检查(就是表中已存在的数据)
add check 表示在表中增加约束
not for replication 表示复制数据时,不检查约束;
也就是当你从其他的表中复制到该表中时,不检查.
(totalprice=price*num) 表示约束条件
只要是约束有效,当插入记录还是修改字段都要受到此约束的影响.
所以你的理解是错误的.

你补充的问题:
两个表之间的约束只有通过外键约束实现;所以当我刚看到你的问题后也是眼前
一亮,我想了很久,也许是我能力不够,没法实现;只能:
保留a表中的totalprice列,定义上面的约束;
在b表中,update b set b.totalprice=a.totalprice from a where b.b_id=a.id --将通过a表约束的totalprice列的值挪过到b表中来.
也许还会有其他的方法或则是间接的方法能实现!努力中!
庆桖松0im
2009-04-27 · TA获得超过1064个赞
知道小有建树答主
回答量:894
采纳率:0%
帮助的人:670万
展开全部
你用trigger吧,在插入前金额这一列的值等于单价×数量。
很方便的,如何创建trigger你自己找点资料
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式