2009-09-07 32 views
-1

想我也該「DOM」表,該表包含兩個字段主鍵衝突是否區分大小寫

  1. 代碼

代碼應該是主鍵。在情況下,如果我輸入值(「SD」,「domnic」) 那樣,如果我在asp.net輸入(「SD」,「domnic1」) 我已經寫了驗證,所以我可以接收警報消息。

protected void ButtonSave_Click(object sender, EventArgs e) 
{ 
    try 
    { 
     if (Mode == "Add") 
     { 
      primarykeyValidation();-------------->validation 

      if (strpkval == TextBoxWorkshopid.Text) 
      { 
       Alert.Show("code Already Exists"); 
       TextBoxWorkshopid.Text = string.Empty; 
       TextBoxWorkshopid.Focus(); 
       return; 
      } 
     } 
... 

public void primarykeyValidation() 
{ 
    DataSet dspkval = new DataSet(); 
    try 
    { 
     objaccess.Option = "P"; 
     objaccess.code= TextBoxWorkshopid.Text; 

     dspkval = objaccess.retriveOutsideWorkshops(); 

     if (dspkval != null && dspkval.Tables.Count != 0 && dspkval.Tables[0].Rows.Count != 0) 
     { 
      strpkval = dspkval.Tables[0].Rows[0]["CODE"].ToString(); 

     } 
    } 
    catch (System.Exception ex) 
    { 
     throw ex; 
    } 
} 

如果我輸入('sd','domnic'),它將不會顯示消息只是由於違反主鍵而拋出的錯誤。

在「P」選項,我已經寫了查詢作爲

select code from xxx where [email protected] 

所以,如果我進入小case'sd」然後我sholud接收警報消息「的代碼已位於退出,但它wouldnt顯示 消息。 .......

回答

3

1)配置你的數據庫大小寫被譽爲collation它會影響整個數據庫,但

2)您可以強制給定的查詢有特定的排序。: http://sqlserver2000.databases.aspfaq.com/how-can-i-make-my-sql-queries-case-sensitive.html

3)使所有的PK值都在第一時間被髮送到數據庫之前進行大寫您可以修改的業務邏輯。你必須進行更新,做到這一點/刀片以及查詢的,所以它可能會導致混亂(和小心你的查詢仍然sargable即不要把UPPER(@code)在查詢 -之前實際修改值推杆它在參數中)。