2012-06-12 5 views
2

У меня есть 2 хранимых процедуры Encode, Decode и я хочу использовать этот sp для преобразования значений столбца datetime (скажем Dob) в зашифрованную дату. Проблема заключается в том, что зашифрованный формат не находится в datetime (varbinary), и поэтому он не может быть вставлен в это поле. Изменение типа данных или добавление нового столбца не благоприятствует мне, поскольку мой db является огромным с большим количеством столы и sps.Примеры, которые я использую в настоящее время:Зашифровать поле datetime в сервере mysql

declare @datetime 
set @datetime='01/02/2008 12:45 PM' 
declare @secretDate varchar(400) 
declare @date varchar(200) 
set @date=(select Convert(varchar(200),@datetime,120) 
EXEC @secretDate=dbo.Encode @date 
set @date=(select Convert(varchar(200),@secretdate,120)) 
select Convert(varchar(200),convert(varbinary(MAX),@date)) as EncryptedDate 

Любое предложение оценено!

ответ

2

Вам нужно будет сделать это изменение определения столбца в несколько этапов.

1) Добавьте новый зашифрованный столбец, заданный в кодированное значение.

2) Отмените существующий столбец даты из таблицы.

3) Переименуйте имя encryptedDate в существующее имя столбца даты.

Возможно, вы выполните шаги 2 + 3 в одной команде, но я не уверен в синтаксисе.

Любое предложение оценено!

Все это звучит как плохая идея. Если данные зашифрованы, но функция «Декодировать» является хранимой процедурой в БД, то данные фактически не зашифрованы. Это также предотвращает сравнение всех данных с работой, что является плохим веществом.

Почему бы просто не кодировать данные, когда вы читаете их из БД, если вы не хотите представлять их пользователям?

0

Времена, и особенно даты имеют очень необычную, нелинейную структуру. Трудно даже сохранить даты в структурах, предназначенных для дат. Если вам нужно сохранить эти данные в зашифрованном виде, не пытайтесь сохранить их в поле date/datetime.

Смежные вопросы