Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- CREATE FUNCTION [dbo].[pAC_NAM_Actor_Name] (@changingTimepoint date)
- RETURNS TABLE WITH SCHEMABINDING AS RETURN
- SELECT
- AC_ID,
- AC_NAM_Actor_Name,
- AC_NAM_ChangedAt
- FROM
- [dbo].[rAC_NAM_Actor_Name](@changingTimepoint) AC_NAM
- WHERE
- AC_NAM_ChangedAt = (
- SELECT
- MAX(sub.AC_NAM_ChangedAt)
- FROM
- [dbo].[rAC_NAM_Actor_Name](@changingTimepoint) sub
- WHERE
- sub.AC_ID = AC_NAM.AC_ID
- );
- GO
- CREATE FUNCTION [dbo].[qAC_NAM_Actor_Name](
- @AC_ID int,
- @AC_NAM_Actor_Name varchar(42),
- @AC_NAM_ChangedAt datetime
- )
- RETURNS INT
- BEGIN
- RETURN (
- SELECT
- COUNT(*)
- FROM
- [dbo].[pAC_NAM_Actor_Name](@AC_NAM_ChangedAt)
- WHERE
- AC_ID <> @AC_ID
- AND
- AC_NAM_Actor_Name = @AC_NAM_Actor_Name
- )
- END
- GO
- ALTER TABLE [dbo].[AC_NAM_Actor_Name]
- ADD CONSTRAINT uqAC_NAM_Actor_Name
- CHECK ([dbo].[qAC_NAM_Actor_Name](AC_ID, AC_NAM_Actor_Name, AC_NAM_ChangedAt) = 0);
- GO
- INSERT INTO lAC_Actor (AC_NAM_Actor_Name, AC_NAM_ChangedAt)
- VALUES('Nathalie', '2009-09-21');
- INSERT INTO lAC_Actor (AC_ID, AC_NAM_Actor_Name, AC_NAM_ChangedAt)
- VALUES(1, 'Nat', '2012-06-12');
- INSERT INTO lAC_Actor (AC_NAM_Actor_Name, AC_NAM_ChangedAt)
- VALUES('Nathalie', '2012-06-12');
- INSERT INTO lAC_Actor (AC_NAM_Actor_Name, AC_NAM_ChangedAt)
- VALUES('Nathalie', '2012-06-12');
- -- next insert should fail because of the constraint
- INSERT INTO lAC_Actor (AC_NAM_Actor_Name, AC_NAM_ChangedAt)
- VALUES('Nathalie', '2012-12-12');
- SELECT * FROM lAC_Actor;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement