2016-06-23 15 views
0

私のデータベースのserviceという名前のテーブルに次の制約を追加します。SQL Serverでチェック制約を追加する方法は?

制約1: DateCompletedDueDateどちらもStartDateを先行することができます。

CREATE TABLE [Service] (
    Service_ID  INT   NOT NULL PRIMARY KEY 
, Invoice_ID  INT 
, Project_ID  INT   NOT NULL 
, Description CHAR(20) NOT NULL 
, Start_Date  VARCHAR(10) NOT NULL 
, Due_Date  VARCHAR(10) 
, Planned_Price VARCHAR(10) 
, Actual_Price VARCHAR(10) 
, Status   CHAR(10) NOT NULL 
, Date_Completed VARCHAR(10) 
); 

clientという名前のテーブルにもう1つの制約を追加する必要があります。

制約2:Post_Codeの値は、3桁または4桁の正の整数である必要があります。

CREATE TABLE [Client] (
    Client_ID  INT   NOT NULL PRIMARY KEY 
, First_Name  VARCHAR(15) NOT NULL 
, Last_Name  VARCHAR(15) NOT NULL 
, Street_Address VARCHAR(50) 
, Suburb   VARCHAR(15) NOT NULL 
, State   VARCHAR(3) NOT NULL 
, Post_Code  INT   NOT NULL 
, Phone_number INT   NOT NULL 
); 

答えて

2

サービス:

ALTER TABLE [Service] 
ADD CONSTRAINT [service_datecheck] 
CHECK ([StartDate] <= [DateCompleted] AND [StartDate] <= [DueDate]); 

クライアント:

ALTER TABLE [Client] 
ADD CONSTRAINT [client_postcodecheck] 
CHECK ([Post_Code] > 0 AND LEN([Post_Code]) IN (3,4)); 
+0

は負に失敗することがあります。 > = 100 <= 9999が良いかもしれません – Paparazzi

+0

@パパラッチ私はそれをやっていると思っていましたが、おそらくそれは良いでしょうが、質問にあったものとまったく同じものを選ぶことにしました。 –

+0

は私の要求に完全に対応しています。あなたもこれを解決できることを願っています。 http://stackoverflow.com/questions/38011099/how-to-create-an-sqlserver-functions?noredirect=1#comment63464878_38011099をご確認ください。 – Ayyub

関連する問題