要约束A表每天只能INSERT一条记录,可以为 WORKDATE 字段建UNIQUE约束。至于B表,Insert语句可以这样写:insert into B(BID,AID,TASKNAME)
select isnull(count(*),0)+1,@AID,@TASKNAME from B where AID=@AID
select isnull(count(*),0)+1,@AID,@TASKNAME from B where AID=@AID
第一天写日志时,先在主子表中分别增加一条记录,然后根据WORKDATE字段主表A不再增加记录,子表与主表关联可以继续增加记录.说的通俗些就是主表的一条记录对应子表的多条记录.
第二天 ,第三天...也是如此.
---
getdate()
是不是WORKDATE要设置成当前日期呢
然后,为WORDATE建UNIQUE约束.用以上两步对吗?
CREATE TABLE [dbo].[A] (
[AID] [int] IDENTITY (1, 1) NOT NULL ,
[WORKDATE] [varchar] (10) NOT NULL ,
[QUESTION] [varchar] (500) NULL
) ON [PRIMARY]
GOALTER TABLE [dbo].[A] WITH NOCHECK ADD
CONSTRAINT [DF_A_WORKDATE] DEFAULT (convert(varchar(10),getdate(),112)) FOR [WORKDATE],
CONSTRAINT [IX_A] UNIQUE NONCLUSTERED
(
[WORKDATE]
) ON [PRIMARY]
GO
WHERE NOT EIXTS(SELECT 0 FROM 主表 WEHRE DATEDIFF(DD,WORKDATE,GETDATE())<>0)
就只能插入一条,你讲得不是很清楚,也可象子陌说的建UNIQUE约束,具体操作在表设计时的索引中
select isnull(count(*),0)+1,@AID,@TASKNAME from B where AID=@AID
然后,为WORDATE建UNIQUE约束.用以上两步对吗?
------------------------------------------------------------------------------------
不对,在创建表的时候就指定缺省值,并创建唯一索引,如我上面提供的建表脚本所示。
在Insert操作时,只需要使用以下语句:Insert into A(QUESTION) values('QUESTION的内容')
以下是一个示例:--当天第一次执行A表的Insert操作
Insert into A(QUESTION) values('QUESTION的内容1')--查看执行结果
select * from A
/*
AID WORKDATE QUESTION
----------- ---------- -----------------
1 20070907 QUESTION的内容1
*/--当天第二次执行A表的Insert操作
Insert into A(QUESTION) values('QUESTION的内容2')
/*
违反了 UNIQUE KEY 约束 'IX_A'。不能在对象 'A' 中插入重复键。
语句已终止。
*/--查看执行结果
select * from A
/*
AID WORKDATE QUESTION
----------- ---------- -----------------
1 20070907 QUESTION的内容1
*/