2012-09-06 44 views
1

我有两列SQL第二列扶养值

现在TABEL如果我插入或值为0更新列1,列2不应该接受任何价值,应该为null

是他们的任何方式如果您在使用SQL Server添加此约束

+2

这取决于DBMS。你使用什么数据库服务器? – zerkms

+0

我将在SQL 2008和Oracle中实现它 –

回答

2

在创建表时,可以在下面的方式加CHECK约束:

CREATE TABLE tableDemo (
    column1 int, 
    column2 varchar(50), 
    CONSTRAINT CK_column1_column2 CHECK ((column1 = 0 AND column2 IS NULL) OR column1 != 0) 
) 

退房的SQLFIDDLE

2

,你可以看看使用CHECK Constraints

看一看下面的例子

CREATE TABLE #Table(
     column_1 INT, 
     column_2 VARCHAR(250) 
) 

ALTER TABLE #Table 
ADD CONSTRAINT chkRow CHECK ((column_1 = 0 AND column_2 IS NULL) OR column_1 != 0) 

INSERT INTO #Table SELECT 0, NULL 
INSERT INTO #Table SELECT 0, 'TEST' 


INSERT INTO #Table SELECT 1, 'TEST' 


UPDATE #Table 
SET  column_1 = 0 
WHERE column_1 = 1 

SELECT * 
FROM #Table 

DROP TABLE #Table 
+0

感谢您的帮助 我是否也有类似于我的消息 INSERT INTO #Table SELECT 0,'TEST' 0行在第1列,Null在第2列应该插入。 –