1
我有2個表:SQL服務器更新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月9日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 2014-10-09 15:12:04
我提出的解決方案不是你想要的?您提供的圖表顯示了從Position到Vehicle的VehiceId到Id和TimeLocal到PositionTime的兩個外鍵。我可能已經將初始設置稍微不準確,但如果將ON UPDATE CASCADE應用於DateTimeOffset外鍵並更新主表中的數據,則車輛表中修改的數據將級聯到位置表。 – Steve 2014-10-09 15:23:30