На данный момент я пишу небольшую программу конверсии, она преобразует стратегию первичного ключа в использование GUID вместо целых чисел. Это простое требование, вызванное клиентом, и я не могу его изменить.Oracle guid для другой таблицы
Я добавил заменяющего pk-кандидата RAW (16) к каждой таблице в базе данных и заполнил каждую запись с помощью 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 []
Теперь, как я иду дальше и сохраняю это как хороший 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);
}
Я не хочу слишком много размышлять над этим, но в конце концов мне нужно все-таки бросить все вокруг, так что рано или поздно возникает тот же вопрос, с другим покрытием. Хотя ваше решение в порядке, этого недостаточно для (наших конкретных) будущих потребностей. Я бы не задал вопрос иначе. – Oxymoron