目前我正在編寫一個小型轉換程序,它會將主鍵策略轉換爲使用GUID而不是整數。這是一個簡單的客戶導致的要求,我不能改變這一點。Oracle guid到其他表格
我已經爲RAW(16)的替代pk候選添加到數據庫中的每個表中,並用SYS_GUID()填充每條記錄。 我爲FK做了同樣的工作,我爲每個FK添加了一個替代列。 現在我正在將FK連接到PK,通過查詢父表,我得到了特定行的GUID/NEW鍵,之後我想插入到子表中的替代候選FK中。
有點像這樣:
sqlString = "SELECT PK FROM " + t+ " WHERE " + fkcol+ " = " + childValue;
OracleDataReader guidReader = GetDataReader(sqlString);
while (guidReader.Read())
{
sqlString = "UPDATE T SET FK = " + guidReader["PK"];
}
調試此的SqlString讓我以下值:
UPDATE SIS_T_USER SET FK_C_EMPLOYEE_ID = System.Byte []
現在,如何我是否會將其保存爲oracle數據庫中的一個很好的指導?
編輯如何:
OracleCommand command = new OracleCommand(sqlString, this.oracleConnection);
command.CommandType = CommandType.Text;
OracleParameter op1 = new OracleParameter("guid", OracleDbType.Raw);
op1.Value = guidReader["PK"];
command.Parameters.Add(op1);
try
{
command.ExecuteNonQuery();
}
catch (OracleException oex)
{
Console.WriteLine("Unable to update: {0}", oex.Message);
}
我不想對此做太多的闡述,但最終無論如何我最終還是需要圍繞指導進行折騰,所以遲早會出現同樣的問題,並帶有不同的塗層。雖然你的解決方案很好,但它不足以滿足(我們特定的)未來的需求。否則我不會問這個問題。 – Oxymoron 2010-04-27 11:49:09