Note that there are some explanatory texts on larger screens.

plurals
  1. POSQL Where Exists Doesn't Filter?
    primarykey
    data
    text
    <blockquote> <p>System.Data.SqlClient.SqlException (0x80131904): Violation of UNIQUE KEY constraint 'AK_SeqNo'. Cannot insert duplicate key in object 'dbo.SeqNo'.</p> </blockquote> <p>I get the above SQL Server 2005 Express error randomly. Maybe once every 3 weeks from the stored procedure below. Can anyone see why?</p> <pre><code>CREATE PROCEDURE [dbo].[mspResetSeqNo] @Today DATETIME AS BEGIN SET NOCOUNT ON; DECLARE @DateSrc DATETIME DECLARE @MyGUID UNIQUEIDENTIFIER -- Check Input is Valid IF @Today IS NULL BEGIN RAISERROR (N'@Today cannot be NULL', 10, 1); RETURN 1; END -- Chop off the time part: SET @DateSrc = DATEADD(d, 0, DATEDIFF(d, 0, @Today)); -- Get Current Location GUID SET @MyGUID = dbo.MyGUID(); -- If this is the first entry for the day then initialise INSERT INTO dbo.SeqNo(MyGUID, TheDay, LastNo) SELECT @MyGUID, @DateSrc, 0 WHERE NOT EXISTS ( SELECT 1 FROM dbo.SeqNo AS sn WHERE sn.MyGUID = @MyGUID AND sn.TheDay = @DateSrc ); RETURN(0); END </code></pre> <p>The constraint for AK_SeqNo is:</p> <pre><code>ALTER TABLE [dbo].[SeqNo] ADD CONSTRAINT [AK_SeqNo] UNIQUE NONCLUSTERED ( [TheDay] ASC, [MyGUID] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] </code></pre> <p>The table column for those 2 data types are:</p> <pre><code>[MyGUID] [dbo].[DForeignKey] NOT NULL, [TheDay] [datetime] NOT NULL, </code></pre> <p>The user defined type DForeignKey is:</p> <pre><code>CREATE TYPE [dbo].[DForeignKey] FROM [uniqueidentifier] NULL </code></pre> <p>The MyGUID() function is simply retrieving the local system ID. Every location has a different ID.</p> <pre><code>CREATE FUNCTION [dbo].[MyGUID]() RETURNS uniqueidentifier AS BEGIN DECLARE @me as uniqueidentifier SELECT @me = MyGUID FROM Self RETURN @me END </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload