SQL 同一张表中几个字段间的约束怎么实现?
发布网友
发布时间:2022-05-14 06:55
我来回答
共2个回答
热心网友
时间:2023-08-04 20:31
下面的语句就可实现你要的功能:
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表中来.
也许还会有其他的方法或则是间接的方法能实现!努力中!
热心网友
时间:2023-08-04 20:31
你用trigger吧,在插入前金额这一列的值等于单价×数量。
很方便的,如何创建trigger你自己找点资料