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,这又怎么实现呢? 展开
我没学过约束,像check这样的,也不知道怎么用,可以解释一下么?
check add 只是对插入受约束是吗?可不可以改为这样:check add,update
如果不是在同一张表中,即:表A中没有TotalPrice(金额)字段,而表B中有B_TotalPrice(金额)字段,表B的外键B_ID 是表A的主键ID,约束条件为 B_TotalPrice = (表A中的)price×(表A中的)Num,这又怎么实现呢? 展开
2个回答
展开全部
下面的语句就可实现你要的功能:
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表中来.
也许还会有其他的方法或则是间接的方法能实现!努力中!
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表中来.
也许还会有其他的方法或则是间接的方法能实现!努力中!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询