Val列只有数据变化的时候才可以添加并且不许值为0或为负数
DateAndTime列一天只允许添一行
两个约束同时有效 
不知道这里允许发地址不.
图地址:http://img623.photo.163.com/1122jq/46957053/1925482497.jpg

解决方案 »

  1.   

    Val列只有数据变化的时候才可以添加并且不许值为0或为负数
    可以用check (val>0)DateAndTime列一天只允许添一行
    这个应该只能用触发器限制
      

  2.   

    不是懒啊,是刚开始学,不会啊
    Val列check (val>0)我添加在约束里面说语法有问题
    还有怎么那触发器弄出来?
      

  3.   

    create trigger tri_test on test after insert--将所有test换成你的表名
    as
    begin
    if (select count(*) from test where datediff(day,DateAndTime,getdate())=0)>1--当天的时间有两个的时候,说明刚才插入的时候表里已经有一条了,所以需要删除刚才插入的记录
    begin
    select '插入失败,一天只能插入一条数据'
    delete test from test join inserted on test.DateAndTime=inserted.DateAndTime--此处做了假设,即你每次插入的dateandtime都是和以前不同的,估计你取的时当前值插入,所以假设成立.
    end
    end
      

  4.   

    楼上的写的基本看明白啦,可是怎么去触发器啊?
    还有Val列check (val>0)我添加在约束里面说语法有问题
      

  5.   

    你这么定义了当你对表进行插入操作后会自动触发该触发器约束里直接写:val>0
      

  6.   

    不是的,这样的触发器是建立在表这个级别的.你的所谓"500-1000条数据",如果只是一个表里将要插入的数据记录数,那只需要在这个表上建立我刚才的触发器就可以了.它回控制整个表,而不是属于每一条记录.你的"约束时间从1小时和1天",应该是不同的表有这样的需求吧.同一个表的不同字段肯定要满足同样的逻辑,要么一天插一个,要么一小时插一个.当然也可以是A字段一天插一条,B字段可以一小时插一条,但这时候的A必须在一天内都要一样? 触发器定义本身不会让系统崩溃,如果你触发器多,然后又插入频繁,那到时回对系统资源的占用问题带来一定影响
      

  7.   

    呵呵,还有,我找不到写(雪地撒野告诉我那些语句)的地方
    ---
    开始-->所有程序-->sql server-->查询分析器
    注意要连接上适当的数据库如果企业管理器打开了,也可:工具-->sql 查询分析器
      

  8.   

    哦,那能不能再添加对TagIndex列0.1.2.3.4.5不同数值的判断.现在只有一个数据.要是很多不同数据都放在一个表里面的话应该是TagIndex列的0.1.2.3.4.5代表着不同的数据.就应该是这样
    在TagIndex列整数不同的情况下DateAndTime列一天只允许添一行.
    还有我执行不了:
    服务器: 消息 156,级别 15,状态 1,过程 tri_Table1,行 7
    在关键字 'delete' 附近有语法错误。
    create trigger tri_Table1 on Table1 after insert--将所有test换成你的表名
    as
    begin
    if (select count(*) from Table1 where datediff(day,DateAndTime,getdate())=0)>1--当天的时间有两个的时候,说明刚才插入的时候表里已经有一条了,所以需要删除刚才插入的记录
    begin
    select --插入失败,一天只能插入一条数据'
    delete Table1 from Table1 join inserted on Table1.DateAndTime=inserted.DateAndTime--此处做了假设,即你每次插入的dateandtime都是和以前不同的,估计你取的时当前值插入,所以假设成立.
    end
    end
      

  9.   

    对不起啊,我把select --插入失败,一天只能插入一条数据'改啦,西西