2012-10-06 26 views
-2
create table employee 
(
    empID int check(empID>0), 
    Fname varchar(50) check(Fname<7), 
    Lname varchar(50), 
    Salary int check (salary>0), 
    Joining_Date date, 
    DOB date, 

) ; 
insert into employee values (5,'Ali','Murtaza', 30000, '2012-01-12','1984-01-20') 

此表給出了上述的錯誤.. 這裏,我想對FNAME檢查不要超過7..suggest ans請消息245,級別16,狀態1,第1名轉換爲varchar值「阿里」轉換爲數據類型爲int失敗時

+0

你可以編輯你的問題,並提供更多的細節,我建議你這樣做。只是發佈代碼不是問題。話雖如此,錯誤信息很清楚。我建議你嘗試一個明確的列列表。 – driis

+0

我不能讓你driis..please解釋 –

+1

什麼數據庫平臺? – Spevy

回答

3

您的檢查約束試圖查看字符串'阿里'是否少於七。這沒有意義。引擎正試圖將ali轉換爲它無法完成的int。

我猜你的意圖是檢查以確保fname字符長度小於7.如果是這樣的話,爲什麼要使用varchar(50)?將其更改爲varchar(7)並放棄支票。

fname varchar(7), 

如果你真的被困在一個檢查做,然後你需要做的是這樣的:

fname varchar(50) check(length(fname)<7), /* depending on sql flavor */ 

如果你試圖去做別的事情,它是不是清楚你的問題。另外,根據你的SQL風格(tsql,plsql等),你的檢查約束的形式可能有效也可能不是有效的,我建議指定你的問題引用的SQL的風格。

+0

RTThomas你是有幫助的..我需要一點幫助如何改變這個列現在使用它像fname varcher(7) –

相關問題