Foreign Key links - "Restrict is specified" error

Dave Addey listmail1 at dsl.pipex.com
Tue Dec 13 14:02:06 CST 2005


Hi Ivan,

> It should be constraint violation error with more appropriate message.
> I will fix it ASAP. But it should not be risen if both keys exist.
> 
> Are you sure inPlaylistID and inTrackID presented at the keys' tables?

Drat - it was that simple.  I thought I had added the Playlist key to the
table before trying to add the PlaylistTrack, but in fact I hadn't.  Sorry -
that was a simple mistake on my part.

A more descriptive error message would be good, however :-)

Thanks!

Dave.

> From: Ivan Smahin <IvanSmahin at public.kherson.ua>
> Organization: Home
> Reply-To: Valentina Developers <valentina at lists.macserve.net>
> Date: Tue, 13 Dec 2005 15:57:51 +0200
> To: Valentina Developers <valentina at lists.macserve.net>
> Subject: Re: Foreign Key links - "Restrict is specified" error
> 
> Hello Dave,
> 
> Tuesday, December 13, 2005, 3:31:13 PM, you wrote:
> 
> DA> Hi all,
> 
> DA> I¹m trying to get a Foreign Key link to work, to link together a list of
> DA> Tracks and a list of Playlists (read in from iTunes).  But I¹m having some
> DA> problems.  Here¹s the background.
> 
> DA> I¹m reading in the iTunes XML library.  I get the Tracks first, then the
> DA> Playlists, with each of their PlaylistTracks (showing how tracks are used
> in
> DA> a playlist).
> 
> DA> Each Track has a unique integer ID, and so does each Playlist.  I have a
> DA> third table, ³vPlaylistTracks², which links Playlists and Tracks together.
> 
> DA> In the constructor of both my vTracks table and my vPlaylists I have a
> call
> DA> to create the UniqueID:
> 
> DA>   UniqueID = New VULong("UniqueID", EVFlag.fUnique + EVFlag.fIndexed)
> 
> DA> (Both tables have a property called ³UniqueID as VULong²)
> DA>   
> DA> In my joining table, I have:
> 
> DA>   Name = "PlaylistTracks"
> DA>   
> DA>   PlaylistUniqueIDPtr = New VULong("PlaylistUniqueIDPtr", EVFlag.fIndexed
> +
> DA> EVFlag.fNullable)
> DA>   TrackUniqueIDPtr = New VULong("TrackUniqueIDPtr", EVFlag.fIndexed +
> DA> EVFlag.fNullable)
> DA>   
> 
> DA> In my Database constructor, I have:
> 
> DA>   VDatabase(EVStorageType.kDefault)
> DA>   
> DA>   vTracks = New vTracksTable
> DA>   vPlaylists = New vPlaylistsTable
> DA>   vPlaylistTracks = New vPlaylistTracksTable
> DA>   
> DA>   vPT_PlaylistUniqueIDLink =
> DA> CreateForeignKeyLink("PT_PlaylistUniqueIDLink",
> DA> vPlaylists.UniqueID, vPlaylistTracks.PlaylistUniqueIDPtr,
> DA> EVOnDelete.kSetNull, EVOnUpdate.kCascade, false)
> DA>   vPT_TrackUniqueIDLink = CreateForeignKeyLink("PT_TrackUniqueIDLink",
> DA> vTracks.UniqueID, vPlaylistTracks.TrackUniqueIDPtr, EVOnDelete.kSetNull,
> DA> EVOnUpdate.kCascade, false)
> DA>   
> DA> I can add Tracks and Playlists to their tables with no problems.  But when
> I
> DA> try and add a PlaylistTrack to the vPlaylistTracks table, I get an error.
> 
> DA> Here¹s what I am doing:
> 
> DA>   Dim newRecID as integer
> DA>   LibraryDB3.vPlaylistTracks.SetBlank(EVValueAccess.forAdd)
> DA>   LibraryDB3.vPlaylistTracks.PlaylistUniqueIDPtr.Value = inPlaylistID
> DA>   LibraryDB3.vPlaylistTracks.TrackUniqueIDPtr.Value = inTrackID
> DA>   newRecID = LibraryDB3.vPlaylistTracks.AddRecord
> DA>   
> DA> The AddRecord call raises a Vexception error:
> 
> DA> ³Restrict is specified.  Dropping is un available till constraints exist.²
> 
> DA> What does this error mean?  What have I done wrong?
> 
> It should be constraint violation error with more appropriate message.
> I will fix it ASAP. But it should not be risen if both keys exist.
> 
> Are you sure inPlaylistID and inTrackID presented at the keys' tables?
> 
> 
> -- 
> Best regards,
>  Ivan                            mailto:IvanSmahin at public.kherson.ua
> 
> _______________________________________________
> Valentina mailing list
> Valentina at lists.macserve.net
> http://lists.macserve.net/mailman/listinfo/valentina




More information about the Valentina mailing list