TSQL函数和Check约束以确保表中存在父值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TSQL函数和Check约束以确保表中存在父值相关的知识,希望对你有一定的参考价值。

If a "InReplyToID" is provided, it must be a valid MessageId
  1. ALTER TABLE [dbo].[Message] WITH CHECK ADD CONSTRAINT [CK_Message] CHECK (([InReplyToId] IS NULL OR [dbo].[CheckInReplyToMessageId]([InReplyToId])>=(0)))
  2. GO
  3. ALTER TABLE [dbo].[Message] CHECK CONSTRAINT [CK_Message]
  4.  
  5.  
  6.  
  7. CREATE FUNCTION [dbo].[CheckInReplyToMessageId]
  8. (
  9. @MessageId BIGINT
  10. )
  11. RETURNS bit
  12. AS
  13. BEGIN
  14. DECLARE @RetVal bit
  15.  
  16. SET @RetVal = (SELECT MessageId
  17. FROM Message
  18. WHERE MessageId = @MessageId)
  19.  
  20. RETURN isnull(@RetVal, 0)
  21.  
  22. END

以上是关于TSQL函数和Check约束以确保表中存在父值的主要内容,如果未能解决你的问题,请参考以下文章

无法启用此约束,因为并非所有值都具有相应的父值

无法启用此约束,因为并非所有值都有对应的父值

SQLite 学习

oracle的check约束

7.windows-oracle实战第七课 --约束

SQL-TSQL