我是菜鸟,我创建了一个规则,执行时出现以下问题,请问这是为什么???代码如下:
go
create rule id_rule
as @ id > 0
exec sp_bindrule 'id_rule','book.id'
执行时,出现以下错误,这是为什么?请解释,谢谢!!消息 4145,级别 15,状态 1,过程 id_rule,第 2 行
在应使用条件的上下文(在 'id' 附近)中指定了非布尔类型的表达式。

解决方案 »

  1.   

    不要用rule,使用constraint
    alter table book
        add constraint chk check(id>0)
      

  2.   

    go
    create rule id_rule
    as @id > 0--@ id之间有空格
    exec sp_bindrule 'id_rule','book.id'
      

  3.   

    恩,ssp2009大哥说得对,但改了之后又提示说exec附近有语法错误的,怎么回事?
      

  4.   

    exec sp_bindrule '规则名','表名.列名'
      

  5.   

    我分别执行了一下的,exec sp_bindrule 'id_rule','book.id'
    这会儿又说这样,大哥你看看的。
    消息 15148,级别 16,状态 1,过程 sp_bindrule,第 190 行
    数据类型或表列 'book.id' 不存在,或您没有所需的权限。

    book.id肯定是存在的,我用的是管理权限,怎么可能没有权限呢???
      

  6.   

    我比较了一下的,同一条语句可以绑定其他的表的列,不同的是,两个表(在同一个数据库下,无关联)的ID数据类型不同的,ID(没有设为主键,但里面插有数据)整型的那个表可以绑定,ID(已设为了主键,是空表,没有插任何数据的)为char这个表不行的,这是为什么???问题出在这里么???
    书上关于rule有说明:不能绑定系统数据类型(int,char...不都是系统数据类型么,除了用户自定义数据类型,照书上说,一般的数据还都绑定不了啊);不适用于已存在的数据(能绑定的那个表中就有数据啊,反而不能绑定的那个表中是没有数据的);
    请各位高手来给我解惑的。谢谢了。
      

  7.   

    确定你当前使用的库里有book表,并且确定你的book表里有id字段?
      

  8.   

    哥,我错了,book里是book_id.没有id的。谢谢。结贴!!!
      

  9.   

    哥,我错了,book里是book_id.没有id的。谢谢。结贴!!!