Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. Database & SysAdmin
  3. Database
  4. Error With Simple Script

Error With Simple Script

Scheduled Pinned Locked Moved Database
csharpasp-netdatabasebusinesstools
3 Posts 2 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • K Offline
    K Offline
    Kevin Marois
    wrote on last edited by
    #1

    I'm trying to create a small sample database. Towards the bottom when I', inserting Book3, I suddenly get an FK violation from Books into Categories. Yet the caregory id is there. Can someone try thnis and tell me wtf is wrong????

    USE master
    IF EXISTS(SELECT * FROM sys.databases WHERE Name = 'BookCatalog')
    DROP DATABASE BookCatalog
    Go
    CREATE DATABASE BookCatalog
    GO
    USE [BookCatalog]
    GO

    CREATE TABLE [dbo].[BookCategories]
    (
    [Id] [INT] IDENTITY(1,1) PRIMARY KEY NOT NULL,
    [Name] VARCHAR(MAX) NOT NULL,
    )

    CREATE TABLE [dbo].[Books]
    (
    [Id] [INT] IDENTITY(1,1) PRIMARY KEY NOT NULL,
    [Category] [INT] NULL FOREIGN KEY (Id) REFERENCES BookCategories(Id),
    [Title] VARCHAR(MAX) NOT NULL,
    [Price] MONEY NULL
    )

    CREATE TABLE [dbo].[Authors]
    (
    [Id] [INT] IDENTITY(1,1) PRIMARY KEY NOT NULL,
    [Name] VARCHAR(MAX) NOT NULL,
    )

    CREATE TABLE [dbo].[BookAuthors]
    (
    [Id] [INT] IDENTITY(1,1) PRIMARY KEY NOT NULL,
    [Book] [INT] NULL FOREIGN KEY (Id) REFERENCES Books(Id),
    [Author] [INT] NULL FOREIGN KEY (Id) REFERENCES Authors(Id),
    )

    GO
    USE [BookCatalog]

    -- Book Categories
    DECLARE @CategoryId1 INT
    INSERT INTO BookCategories (Name) VALUES ('C#')
    SET @CategoryId1 = SCOPE_IDENTITY()

    DECLARE @CategoryId2 INT
    INSERT INTO BookCategories (Name) VALUES ('Programming Practices')
    SET @CategoryId2 = SCOPE_IDENTITY()

    -- Authors
    DECLARE @MartinId INT
    INSERT INTO Authors (Name) VALUES ('Bob Martin')
    SET @MartinId = SCOPE_IDENTITY()

    DECLARE @Albahari1Id INT
    INSERT INTO Authors (Name) VALUES ('Joseph Albahari')
    SET @Albahari1Id = SCOPE_IDENTITY()

    DECLARE @Albahari2Id INT
    INSERT INTO Authors (Name) VALUES ('Ben Albahari')
    SET @Albahari2Id = SCOPE_IDENTITY()

    DECLARE @WagnerId INT
    INSERT INTO Authors (Name) VALUES ('Bill Wagner')
    SET @WagnerId = SCOPE_IDENTITY()

    DECLARE @SkeetId INT
    INSERT INTO Authors (Name) VALUES ('Jon Skeet')
    SET @SkeetId = SCOPE_IDENTITY()

    -- Books
    DECLARE @BookId1 INT
    INSERT INTO Books (Category, Title, Price) VALUES (@CategoryId1, 'Agile Principles, Patterns, and Practices in C#', 64.99)
    SET @BookId1 = SCOPE_IDENTITY()

    DECLARE @BookId2 INT
    INSERT INTO Books (Category, Title, Price) VALUES (@CategoryId2, 'C# 3.0 in a Nutshell', 34.99)
    SET @BookId2 = SCOPE_IDENTITY()

    DECLARE @BookId3 INT
    INSERT INTO Books (Category, Title, Price) VALUES (@CategoryId2, 'C# Core Langaue: Little Black Book', 20.00)
    SET @BookId3 = SCOPE_IDENTITY()

    DECLARE @BookId4 INT
    INSERT INTO Books (Category, Title, Price) VALUES (@CategoryId2

    Richard DeemingR 1 Reply Last reply
    0
    • K Kevin Marois

      I'm trying to create a small sample database. Towards the bottom when I', inserting Book3, I suddenly get an FK violation from Books into Categories. Yet the caregory id is there. Can someone try thnis and tell me wtf is wrong????

      USE master
      IF EXISTS(SELECT * FROM sys.databases WHERE Name = 'BookCatalog')
      DROP DATABASE BookCatalog
      Go
      CREATE DATABASE BookCatalog
      GO
      USE [BookCatalog]
      GO

      CREATE TABLE [dbo].[BookCategories]
      (
      [Id] [INT] IDENTITY(1,1) PRIMARY KEY NOT NULL,
      [Name] VARCHAR(MAX) NOT NULL,
      )

      CREATE TABLE [dbo].[Books]
      (
      [Id] [INT] IDENTITY(1,1) PRIMARY KEY NOT NULL,
      [Category] [INT] NULL FOREIGN KEY (Id) REFERENCES BookCategories(Id),
      [Title] VARCHAR(MAX) NOT NULL,
      [Price] MONEY NULL
      )

      CREATE TABLE [dbo].[Authors]
      (
      [Id] [INT] IDENTITY(1,1) PRIMARY KEY NOT NULL,
      [Name] VARCHAR(MAX) NOT NULL,
      )

      CREATE TABLE [dbo].[BookAuthors]
      (
      [Id] [INT] IDENTITY(1,1) PRIMARY KEY NOT NULL,
      [Book] [INT] NULL FOREIGN KEY (Id) REFERENCES Books(Id),
      [Author] [INT] NULL FOREIGN KEY (Id) REFERENCES Authors(Id),
      )

      GO
      USE [BookCatalog]

      -- Book Categories
      DECLARE @CategoryId1 INT
      INSERT INTO BookCategories (Name) VALUES ('C#')
      SET @CategoryId1 = SCOPE_IDENTITY()

      DECLARE @CategoryId2 INT
      INSERT INTO BookCategories (Name) VALUES ('Programming Practices')
      SET @CategoryId2 = SCOPE_IDENTITY()

      -- Authors
      DECLARE @MartinId INT
      INSERT INTO Authors (Name) VALUES ('Bob Martin')
      SET @MartinId = SCOPE_IDENTITY()

      DECLARE @Albahari1Id INT
      INSERT INTO Authors (Name) VALUES ('Joseph Albahari')
      SET @Albahari1Id = SCOPE_IDENTITY()

      DECLARE @Albahari2Id INT
      INSERT INTO Authors (Name) VALUES ('Ben Albahari')
      SET @Albahari2Id = SCOPE_IDENTITY()

      DECLARE @WagnerId INT
      INSERT INTO Authors (Name) VALUES ('Bill Wagner')
      SET @WagnerId = SCOPE_IDENTITY()

      DECLARE @SkeetId INT
      INSERT INTO Authors (Name) VALUES ('Jon Skeet')
      SET @SkeetId = SCOPE_IDENTITY()

      -- Books
      DECLARE @BookId1 INT
      INSERT INTO Books (Category, Title, Price) VALUES (@CategoryId1, 'Agile Principles, Patterns, and Practices in C#', 64.99)
      SET @BookId1 = SCOPE_IDENTITY()

      DECLARE @BookId2 INT
      INSERT INTO Books (Category, Title, Price) VALUES (@CategoryId2, 'C# 3.0 in a Nutshell', 34.99)
      SET @BookId2 = SCOPE_IDENTITY()

      DECLARE @BookId3 INT
      INSERT INTO Books (Category, Title, Price) VALUES (@CategoryId2, 'C# Core Langaue: Little Black Book', 20.00)
      SET @BookId3 = SCOPE_IDENTITY()

      DECLARE @BookId4 INT
      INSERT INTO Books (Category, Title, Price) VALUES (@CategoryId2

      Richard DeemingR Offline
      Richard DeemingR Offline
      Richard Deeming
      wrote on last edited by
      #2

      Quote:

      ...
      [Category] [INT] NULL FOREIGN KEY (Id) REFERENCES BookCategories(Id),
      ...
      [Book] [INT] NULL FOREIGN KEY (Id) REFERENCES Books(Id),
      [Author] [INT] NULL FOREIGN KEY (Id) REFERENCES Authors(Id)
      ...

      The definition of your foreign keys is wrong. You're saying that the ID of the book must also exist in the BookCategories table, and the ID of the book author must exist in both the Books and Authors tables. Once you fix the FK definitions, the rest of your script will work:

      CREATE TABLE [dbo].[BookCategories]
      (
      [Id] [INT] IDENTITY(1,1) PRIMARY KEY NOT NULL,
      [Name] VARCHAR(MAX) NOT NULL
      )

      CREATE TABLE [dbo].[Books]
      (
      [Id] [INT] IDENTITY(1,1) PRIMARY KEY NOT NULL,
      [Category] [INT] NULL FOREIGN KEY REFERENCES BookCategories(Id),
      [Title] VARCHAR(MAX) NOT NULL,
      [Price] MONEY NULL
      )

      CREATE TABLE [dbo].[Authors]
      (
      [Id] [INT] IDENTITY(1,1) PRIMARY KEY NOT NULL,
      [Name] VARCHAR(MAX) NOT NULL
      )

      CREATE TABLE [dbo].[BookAuthors]
      (
      [Id] [INT] IDENTITY(1,1) PRIMARY KEY NOT NULL,
      [Book] [INT] NULL FOREIGN KEY REFERENCES Books(Id),
      [Author] [INT] NULL FOREIGN KEY REFERENCES Authors(Id)
      )


      "These people looked deep within my soul and assigned me a number based on the order in which I joined." - Homer

      "These people looked deep within my soul and assigned me a number based on the order in which I joined" - Homer

      K 1 Reply Last reply
      0
      • Richard DeemingR Richard Deeming

        Quote:

        ...
        [Category] [INT] NULL FOREIGN KEY (Id) REFERENCES BookCategories(Id),
        ...
        [Book] [INT] NULL FOREIGN KEY (Id) REFERENCES Books(Id),
        [Author] [INT] NULL FOREIGN KEY (Id) REFERENCES Authors(Id)
        ...

        The definition of your foreign keys is wrong. You're saying that the ID of the book must also exist in the BookCategories table, and the ID of the book author must exist in both the Books and Authors tables. Once you fix the FK definitions, the rest of your script will work:

        CREATE TABLE [dbo].[BookCategories]
        (
        [Id] [INT] IDENTITY(1,1) PRIMARY KEY NOT NULL,
        [Name] VARCHAR(MAX) NOT NULL
        )

        CREATE TABLE [dbo].[Books]
        (
        [Id] [INT] IDENTITY(1,1) PRIMARY KEY NOT NULL,
        [Category] [INT] NULL FOREIGN KEY REFERENCES BookCategories(Id),
        [Title] VARCHAR(MAX) NOT NULL,
        [Price] MONEY NULL
        )

        CREATE TABLE [dbo].[Authors]
        (
        [Id] [INT] IDENTITY(1,1) PRIMARY KEY NOT NULL,
        [Name] VARCHAR(MAX) NOT NULL
        )

        CREATE TABLE [dbo].[BookAuthors]
        (
        [Id] [INT] IDENTITY(1,1) PRIMARY KEY NOT NULL,
        [Book] [INT] NULL FOREIGN KEY REFERENCES Books(Id),
        [Author] [INT] NULL FOREIGN KEY REFERENCES Authors(Id)
        )


        "These people looked deep within my soul and assigned me a number based on the order in which I joined." - Homer

        K Offline
        K Offline
        Kevin Marois
        wrote on last edited by
        #3

        That did it!! Ya know I stared at this for an hour. I'm an idiot. Thanks!

        If it's not broken, fix it until it is. Everything makes sense in someone's mind. Ya can't fix stupid.

        1 Reply Last reply
        0
        Reply
        • Reply as topic
        Log in to reply
        • Oldest to Newest
        • Newest to Oldest
        • Most Votes


        • Login

        • Don't have an account? Register

        • Login or register to search.
        • First post
          Last post
        0
        • Categories
        • Recent
        • Tags
        • Popular
        • World
        • Users
        • Groups