2012-09-06 41 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列應該插入。 –