Gần đây tôi đã đọc về UDT. tôi đã tạo ra một loại nhưng tôi có một vấn đề với cái đó. hãy nhìn vào những điều sauThay vì ném khối kiểu lỗi thực hiện thành công
---drop type ssn
CREATE TYPE ssn
FROM VARCHAR(11) NOT NULL;
DECLARE @er ssn;
IF Object_id('TEMPDB.DBO.#ter', 'U') IS NOT NULL
DROP TABLE #ter;
CREATE TABLE #ter (
PERIOD_SID INT
,PERIOD_QUAR VARCHAR(10) PRIMARY KEY (PERIOD_SID)
)
INSERT INTO #ter (
PERIOD_SID
,PERIOD_QUAR
)
SELECT *
FROM (
VALUES (
(1)
,(@er)
)
) V(p, q)
Tôi đã tạo ra một loại SSN với varchar (11) không null, và chạy một logic ở trên, nó thực hiện thành công
Theo giả thiết của tôi nó nên ném một lỗi.
Tôi cần biết lý do tại sao logic trên hoạt động thành công.
EDIT
theo đề nghị của tôi đã thêm UDT này như một cột trong máy chủ AQL, vì trong oracle chúng ta có thể tạo ra một cột với bộ sưu tập tương tự như UDT
IF Object_id('TEMPDB.DBO.#ter1', 'U') IS NOT NULL
DROP TABLE #ter1;
CREATE TABLE #ter1 (
PERIOD_SID INT
,PERIOD_QUAR ssn PRIMARY KEY (PERIOD_SID)
)
Đã xảy ra lỗi trong khi tạo bảng cho biết không có kiểu dữ liệu như vậy "ssn"
Cảm ơn trước
Lỗi nào bạn mong đợi nhận được? –
@GiorgosBetsos Tôi muốn mong đợi như giá trị null không thể gán cho biến số – Smart003
Trong SQL Server, chúng ta có thể 'khai báo' một 'biến' với * khởi tạo * nó (mặc định là' NULL'). Vì vậy, nó che giấu thuộc tính 'NOT NULL' của' UDT'. Bạn không chắc chắn lý do tại sao nó được phép đề cập đến thuộc tính NOT NULL trong UDT. –