C# 其他表的Oracle guid
目前我正在编写一个小型转换程序,它将主键策略转换为使用guid而不是整数。这是一个简单的客户诱导需求,我无法改变 我已经向数据库中的每个表中添加了一个原始(16)的替代pk候选者,并用SYS_GUID()填充了每个记录。 我对FK也做了同样的操作,为每个FK添加了一个替换列。 现在,我正在将FK链接到它们的PK,通过查询父表,我获得特定行的guid/new键,然后我想插入子表中的替代候选FK 有点像这样:C# 其他表的Oracle guid,c#,oracle,guid,save,byte,C#,Oracle,Guid,Save,Byte,目前我正在编写一个小型转换程序,它将主键策略转换为使用guid而不是整数。这是一个简单的客户诱导需求,我无法改变 我已经向数据库中的每个表中添加了一个原始(16)的替代pk候选者,并用SYS_GUID()填充了每个记录。 我对FK也做了同样的操作,为每个FK添加了一个替换列。 现在,我正在将FK链接到它们的PK,通过查询父表,我获得特定行的guid/new键,然后我想插入子表中的替代候选FK 有点像这样: sqlString = "SELECT PK FROM " + t+ " WHERE "
sqlString = "SELECT PK FROM " + t+ " WHERE " + fkcol+ " = " + childValue;
OracleDataReader guidReader = GetDataReader(sqlString);
while (guidReader.Read())
{
sqlString = "UPDATE T SET FK = " + guidReader["PK"];
}
调试此sqlString将获得以下值:
更新SIS_T_用户设置FK_C_员工ID
=系统字节[]
现在,如何在oracle数据库中将其保存为一个漂亮的guid
编辑方式:
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);
}
您为什么不在Oracle的
端执行这些操作呢
MERGE
INTO sis_t_user s
USING employee e
ON (s.integer_fk = e.integer_pk)
WHEN MATCHED THEN
UPDATE
SET s.guid_fk = e.guid_pk
请尝试以下代码:
sqlString = "UPDATE T SET FK = '" + (new Guid((byte[])guidReader["PK"])).ToString() + "'";
基本上,您只需要从字节创建guid,然后将其转换为字符串。
有一个Guid构造函数允许它:。我不想对它做太多的阐述,但最终我还是需要反复使用Guid,所以迟早会出现相同的问题,使用不同的涂层。虽然您的解决方案很好,但它不足以满足(我们的特定)未来需求。否则我就不会问这个问题了。你能展示一下更新的样子吗?我想你需要更新SIS_T_用户集FK_C_EMPLOYEE_ID='33b386b2-bf1d-42be-9110-c688cb8c8afc'之类的东西。我做了一些更改,而不是使用参数化查询。工作起来容易多了