不论是SQL SERVER 2000还是2005,请问各位大侠,SQL SERVER当中的自定义函数是否可以应用到CHECK约束当中去?
比方说:
CREATE TABLE T (C1 INT CHECK (C1 BETWEEN 0 AND 9))若使用自定义函数:
CREATE FUNCTION CT (@C1 INT) RETURNS BIT AS
BEGIN
RETURN ( SELECT (CASE WHEN @C1 BETWEEN 0 AND 9 THEN TRUE ELSE FALSE END))
END 
CREATE TABLE T (C1 INT CHECK DBO.CT(C1))不知道自定义函数怎么样才可以应用到CHECK约束当中去??不胜感谢.YOU ARE FREE TO EAT 分.

解决方案 »

  1.   

    CREATE FUNCTION CT (@C1 INT) RETURNS BIT AS
    BEGIN
    RETURN ( SELECT (CASE WHEN @C1 BETWEEN 0 AND 9 THEN 1 ELSE 0 END))
    ENDgo
    CREATE TABLE T (C1 INT CHECK (dbo.CT(C1)=1))
      

  2.   

    各位,实在不好意思.
    我是楼主.
    以前一直自认为SQL SERVER2005不可能支持复杂的业务规则检测,由于我自认为不可能,只知道CHECK语句里面只能使用常量和函数,不可以使用SELECT等复杂语句,但没有想到CHECK语句里面可以使用自定义函数,后来想到了,也觉得不可能解析得了自定义函数功能.由于自认为的不可能,才让我作茧自缚,自以为是,自高自大,不可一世,妄自尊大...连试都不试一下,就一概否决.今天早上一试,汗颜,惭愧得紧.原来SQL SERVER2005居然支持复杂业务规则检测,但要使用自定义函数功能才可以做到.
     
    真是太出乎我的意料了,早知道的话,我就不用费尽心机去设计Excellence软件的扩展约束功能了.
     
    不过现在可以省省了,Excellence里面少做点,让SQL SERVER2005多做点,相互配合.另外,一楼的答案,完全是抄我的题目,不要以为比我牛X啊.在SQL SERVER2005和VB方面,我还没有遇到比我更牛X的呢?另外,我的呢称真的很面善,如果访问我的QQ空间,就知道"渔舟唱晚"是怎么来的了http://46558080.qzone.qq.com/哎呀,我怎么突然觉得我很自恋来了,还是越来越变态了?