2016-06-23 4 views
0

Я хочу добавить следующие проверочные ограничения для таблицы с именем «сервис», в графе «статус» данныхКак добавить ограничения проверки в базу данных?

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

Содержание/образец колонке «Статус» будет 1 из следующего.
планируется, активный, завершенный

* если активен или завершен: DueDate, StartDate и PlannedPrice все не нулевой
* если завершено: DateCompleted и ActualPrice оба не нулевой

ответ

0

я не проверял,
однако это первый один

ALTER TABLE Service WITH NOCHECK 
ADD CONSTRAINT CK_serice_one 
CHECK (
    (Status IN ('active','completed') 
      AND DueDate IS NOT NULL 
      AND StartDate IS NOT NULL 
      AND PlannedPrice IS NOT NULL) 
    OR Status NOT IN ('active','completed') 
); 

и это вторая

ALTER TABLE Service WITH NOCHECK 
ADD CONSTRAINT CK_serice_two 
CHECK (
    (Status LIKE 'completed' 
      AND DateCompleted IS NOT NULL 
      AND ActualPrice IS NOT NULL) 
    OR Status NOT LIKE 'completed' 
); 
+0

Thankyou, это действительно помогло. Выполняю ли я оба эти ограничения в независимой таблице alter table staements или мне нужно выполнить их в одном из операторов table table – Ayyub

+0

, как и у независимого, –

0

Это помогает

Status CHAR(10) NOT NULL CHECK (Status IN ('planned', 'active', 'completed')) 

(Status like 'active' and DueDate NOT NULL AND StartDate not NULL) 
Смежные вопросы