怎样建立这样一种数据限制,表内的每条数据的某两列不能同时相同

解决方案 »

  1.   

    sqlserver 或oracle中可以么,怎么做呢?
      

  2.   

    --建自定义约束.
    CREATE TABLE CheckTbl (col1 int, col2 int);
    GO
    CREATE FUNCTION CheckFnctn(@col1 INT,@col2 INT)
    RETURNS bit
    AS 
    BEGIN
    DECLARE @RETURN BIT
       IF @col1=@col2
    BEGIN
    SET @RETURN=0
    END
    ELSE 
    BEGIN
    SET @RETURN=1
    END
    RETURN @RETURN
    END;
    GO
    ALTER TABLE CheckTbl
    ADD CONSTRAINT chkRowCount CHECK (dbo.CheckFnctn(col1,col2)= 1 );
    GO
      

  3.   

    楼上的楼上的答案我没看懂
    楼主说"某两列不能同时相同",是建立unique index么
      

  4.   

    unique index可以支持列么?
      

  5.   

    colA<>colB如果你的表已经建立,那么在企业管理器,设计表,管理约束上,新建如上约束即可
      

  6.   

    建立触发器:
    create trigger trigger_A on table for insert,update
    as
      decalre @col1 varchar(10) select @col1=(select col1 from inserted)
      decalre @col2 varchar(10) select @col2=(select col2 from inserted)
      if @col1=@col2 raiserror 'Col1与Col2列重复!',16,1
       此仅针对插入或修改一条记录时有效,若需同时操作多条记录,则需作修改.
      

  7.   

    To [jwt1982(飞星)]:
       楼上的,主键虽然可以多列,但仅限制多列主键间的组合唯一,而不能限制两列值不能相同!
      

  8.   

    CREATE TABLE [dbo].[test] (
    [comname] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
    [ma] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL 
    ) ON [PRIMARY]
    GOALTER TABLE [dbo].[test] ADD 
    CONSTRAINT [CK_test] CHECK ([comname] <> [ma])
    GO--测试,相同则出错
    insert into test
    select 'a','a'