这样的两个表如何设计呢
有两个表tb1,tb2
tb1
单号 品名 型号 数量 单价
2012001 西瓜 大号 2 5
2012001 西瓜 小号 2 1
2012001 西瓜 中号 2 3
单号 实收款
2012001 2*5 + 2*1 + 2*3
两个问题
1.如何有tb1记录自动生成tb2呢?当Tb1有该动的时候,tb2也随之改动,
2.tb1表可以优化吗?化成同一个单号下面有多种条目
[解决办法]
tb1 没有感觉不合适,可以再增加一个计算列,直接计算 数量*单价。
alter table tb add 实收款 as 数量*单价
这样你的统计会方便些
[解决办法]
- SQL code
--> 测试数据:[tbl1]if object_id('[tbl1]') is not null drop table [tbl1]create table [tbl1]([单号] int,[品名] varchar(4),[型号] varchar(4),[数量] int,[单价] int)if object_id('[tbl2]') is not null drop table [tbl2]create table [tbl2]([单号] int,实收款 int)goif OBJECT_ID('tri_tracy')is not nulldrop trigger tri_tracygocreate trigger tri_tracy on tbl1after insertasinsert tbl2select [单号],sum(数量*单价) as 实收款 from insertedgroup by [单号]insert [tbl1]select 2012001,'西瓜','大号',2,5 union allselect 2012001,'西瓜','小号',2,1 union allselect 2012001,'西瓜','中号',2,3select * from tbl2/*单号 实收款2012001 18*/
[解决办法]
[解决办法]
[解决办法]
[解决办法]
[解决办法]
不知要达到什么效果
其实个人完全可以不要tb2
查询.汇总什么的.建个视图都可以了
[解决办法]
写一个存储过程,一旦对tb1进行任何操作,都同步修改tb2的数据,放在一个事务里进行。
类似这样:
CREATE PROCEDURE dbo.ABC
--各种参数
AS
BEGIN
SET XACT_ABORT ON
BEGIN TRANSACTION
--修改tb1
--修改tb2
COMMIT TRANSACTION
END
GO