Tôi có một cột nvarchar(50)
trong SQL Server 2000 bảng được định nghĩa như sau:Tại sao lệnh SQL CAST này không hoạt động?
TaskID nvarchar(50) NULL
tôi cần phải cư cột này với SQL ngẫu nhiên GUID của việc sử dụng NEWID()
function (Tôi không thể thay đổi kiểu cột để uniqueidentifier
) .
Tôi cố gắng này:
UPDATE TaskData SET TaskID = CAST(NEWID() AS nvarchar)
nhưng tôi đã nhận được lỗi sau:
Msg 8115, Level 16, State 2, Line 1 Arithmetic overflow error converting expression to data type nvarchar.
Tôi cũng đã cố gắng:
UPDATE TaskData SET TaskID = CAST(NEWID() AS nvarchar(50))
nhưng sau đó đã nhận lỗi này:
.210Msg 8152, Level 16, State 6, Line 1 String or binary data would be truncated.
Tôi không hiểu tại sao điều này không làm việc nhưng điều này không:
DECLARE @TaskID nvarchar(50)
SET @TaskID = CAST(NEW() AS nvarchar(50))
Tôi cũng đã cố gắng CONVERT(nvarchar, NEWID())
và CONVERT(nvarchar(50), NEWID())
nhưng có những sai lầm tương tự.
Cập nhật:
Ok, thị lực của tôi đang xảy ra, kích thước cột trên bàn là nvarchar(32)
không 50. lời xin lỗi sâu sắc nhất cho timewasting và cảm ơn tất cả các câu trả lời.
Bạn có thể và gây ra trên bảng này? Bạn có thể nhận được thông báo lỗi từ trình kích hoạt. sp_helpTrigger 'TaskData' –
@GMastros - không, vấn đề là PEBKAC/PICNIC thường được gọi là mã 'ID 10T'. – Kev