2012-11-06 324 views
0

我是SQL新手。我創建了幾張表:如何編寫alter table語句來添加約束條件

CREATE TABLE MAINTINANCE 
(Maint_mname char(10), 
Maint_date date, 
Maint_duedate date NOT NULL, 
Maint_mdesc char (15));  

CREATE TABLE DESIGNERR 
(Dez_emp_number varchar(11), 
Dez_field char(12), 
Dez_qualification char(10) NOT NULL, 
Dez_experience smallint); 

第一個表,我加入以下約束:

ALTER TABLE MAINTINANCE ADD CONSTRAINT CHK_maintdate CHECK(Maint_date<MAint_duedate); 

但我得到的錯誤invalid ALTER TABLE option。你能不能讓我知道爲什麼會出現這種情況?同樣是爲朋友工作,但不適合我。

對於第二個表我必須寫一個SQL命令的業務規則:

如果設計者的資質是BS隨後的4年最低 經驗是必需的。但是,如果設計師的資格是 MS,那麼至少2年的經驗就足夠了。

我們如何在SQL中定義這個業務規則?

+4

嗨,歡迎來到Stack Overflow!你的第一個問題是拼寫錯誤;那也不適合你的朋友。你認爲你應該如何編寫業務規則? [什麼有_you_嘗試](http://mattgemmell.com/2008/12/08/what-have-you-tried/)?自己表現出一些努力是有禮貌的,如果你沒有發佈你的代碼,沒有人會告訴你你錯誤的地方。 – Ben

回答

3

代碼您發佈的作品

SQL> CREATE TABLE MAINTINANCE 
    2 (Maint_mname char(10), 
    3 Maint_date date, 
    4 Maint_duedate date NOT NULL, 
    5 Maint_mdesc char (15)); 

Table created. 

SQL> ALTER TABLE MAINTINANCE ADD CONSTRAINT CHK_maintdate CHECK(Maint_date<MAint_duedate); 

Table altered. 

如果您收到一個錯誤,

  • 剪切和粘貼從SQL * Plus會話,準確顯示您正在執行什麼語句
  • 發佈完整的錯誤堆棧

雖然它不影響您的代碼,但單詞「MAINTI NANCE「拼寫錯誤。它應該是「維護」。未來的人類開發人員將不勝感激,如果您的表名拼寫正確。

+0

而'DESIGNERR'有一個R:'DESIGNER' –