У меня есть 2 таблицы:SQL Server DateTimeOffset составного ключа
Vehicles:
Id (int,PK),
PositionTime (datetimeoffset)
Positions:
Accuracy (int),
VehicleId (int)
TimeLocal (datetimeoffset)(VehicleId and TimeLocal are composite PK pointing to Id and PositionTime in Vehicles)
Я хочу, чтобы обновить все даты до сегодняшнего дня (время остается неизменным) в обеих таблицах (это означает, что связь между таблицами обновит слишком). Я попытался сначала обновить Позиции, затем Транспортные средства. Но я получаю ошибку:
Violation of PRIMARY KEY constraint 'PK_Positions'. Cannot insert duplicate key in object 'dbo.Positions'.
Дубликат значение ключа (1, 2014-10-09 16: 13: 50,0000000 +03: 00). Глядя в позиции, в таблице «Позиции» есть только одно значение «1,2014-04-24 16: 13: 50.0000000 +03: 00». Реализация в настоящее время:
UPDATE
[dbo].[Positions]
SET
[dbo].[Positions].TimeLocal = CONVERT(DATETIMEOFFSET, DATETIMEOFFSETFROMPARTS(datepart(yyyy, @date), datepart(mm, @date), datepart(dd, @date), datepart(HH, [dbo].[Positions].TimeLocal), datepart(MI, [dbo].[Positions].TimeLocal), datepart(SS, [dbo].[Positions].TimeLocal), datepart(MILLISECOND, [dbo].[Positions].TimeLocal), CAST((FLOOR(DATEPART(TZ, [dbo].[Positions].TimeLocal))/60) AS VARCHAR(10)), CAST((DATEPART(TZ,[dbo].[Positions].TimeLocal)%60) AS VARCHAR(10)), 3))
FROM
[dbo].[Positions]
INNER JOIN
[dbo].[Vehicles]
ON
[dbo].[Positions].VehicleId = [dbo].[Vehicles].Id
спасибо !! Added DB relationship for clarity
Это правда, что я был недостаточно ясен. Отношение находится в связанном изображении: [link] (https://drive.google.com/file/d/0B-WyYs74In7seHNfa0tqRlZNVkk/view?usp=sharing). Ваш ответ действительно близок к тому, что мне нужно. – user3546827
Какое решение я предложил не тем, что вы ищете? На приведенной диаграмме показаны два внешних ключа от позиции до автомобиля на VehiceId до Id и TimeLocal до PositionTime. Возможно, у меня начальная настройка немного неточна, но если вы примените ON UPDATE CASCADE к внешнему ключу DateTimeOffset и обновите данные в первичной таблице, данные, измененные в таблице транспортных средств, будут каскадированы до таблицы позиций. – Steve