Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Truy vấn phụ trong ràng buộc kiểm tra

Lưu ý, những gì bạn thực sự muốn là một ràng buộc khóa ngoại. Điều đó nói rằng, để đưa một "truy vấn" vào séc, bạn có thể viết một hàm có chứa truy vấn và xuất ra một giá trị vô hướng, sau đó sử dụng hàm đó trong ràng buộc kiểm tra.

CREATE FUNCTION myFunction (
    @field DATATYPE(?)
)
RETURNS VARCHAR(5)
AS
BEGIN
    IF EXISTS (SELECT* FROM Table2 WHERE MYFIELD = @field)
        return 'True'
    return 'False'
END

Đại loại vậy. Không được kiểm tra.

Sau đó, bạn có thể thêm nó vào séc của mình như vậy

ALTER TABLE Table1
    WITH CHECK ADD CONSTRAINT CK_Code
    CHECK (myFunction(MYFIELD) = 'True')


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bảng tổng hợp SQL Server với nhiều cột tổng hợp

  2. SQL 2 đếm với bộ lọc khác nhau

  3. Cài đặt SQL Server 2008

  4. Khóa chính tổng hợp so với cột ID bổ sung?

  5. Cách tốt nhất để lưu trữ Chuỗi lớn trong cơ sở dữ liệu SQL Server?