Welcome to Sign in | Help
in Search

Are cineva idee?

Last post 10-31-2008, 11:21 AM by AlexD. 2 replies.
Sort Posts: Previous Next
  •  10-30-2008, 5:55 PM 5988

    Are cineva idee?

    Salut,

    are cineva idee de ce la executia query-ului

    UPDATE Product SET UnitTechPrice=8.00 WHERE ProductID=499

    folosind SQL Server Management Studio

    apare eroarea:

    Msg 544, Level 16, State 1, Procedure dbProdU, Line 15

    Cannot insert explicit value for identity column in table 'Product' when IDENTITY_INSERT is set to OFF.

    The statement has been terminated.

    Precizare:

    Am testat pe doua masini diferite, ambele cu SQL Server 2008 Standard Ed. Am restaurat aceeasi baza de date din acelasi fisier bak. Pe una eroarea de mai sus apare pe cealalta nu apare. Pare deci sa fie vorba de o setare la nivelul serverului si nu ceva legat de baza de date in sine.

    Daca inainte de update adaug

    SET IDENTITY_INSERT Product ON

    functioneaza pe ambele.

    Tabela Product contine o coloana ProductID int IDENTITY(1,1) NOT NULL care este si cheie primara.

    Are cineva vre-o idee?

    Multumesc

     

     

    Filed under:
  •  10-30-2008, 6:02 PM 5989 in reply to 5988

    Re: Are cineva idee?

    Probabil ai un trigger (numit dbProdU) pe tabela Product care face ceva de genul "INSERT INTO Product SELECT * FROM inserted". Setarea la nivelul server-ului care poate afecta executia ar putea fi "nested triggers", vezi la click dreapta pe server / Properties / Advanced / Allow triggers to fire others. Pentru mai multe amanunte, arata-ne si noua codul trigger-ului dbProdU (precum si al celorlalte trigger-e de pe aceasta tabela, daca mai exista altele).

    Razvan
  •  10-31-2008, 11:21 AM 5999 in reply to 5989

    Re: Are cineva idee?

    Razvan, multumesc pentru raspuns, am fost putin surprins cand am vazut numele triggerului in postul tau Smile   ... se pare ca intotdeauna e bine sa citesti foarte atent mesajul de eroare Smile. Intradevar exista triggerul:

    CREATE TRIGGER [dbo].[dbProdU]

    ON [dbo].[Product]

    AFTER UPDATE

    AS

    BEGIN

    SET NOCOUNT ON

    DELETE FROM DBCXC.dbo.Produse

    FROM DBCXC.dbo.Produse p JOIN inserted i ON (i.ProductID=p.ID)

    WHERE i.Discontinued=1

    UPDATE DBCXC.dbo.Produse SET Cod=i.ProductNumericCode, Nume=i.ProductName

    FROM DBCXC.dbo.Produse p JOIN inserted i ON (i.ProductID=p.ID)

    WHERE i.Discontinued=0

    INSERT INTO DBCXC.dbo.Produse (ID,Cod,Nume)

    SELECT ProductID, LEFT(ProductNumericCode,50), ProductName FROM inserted

    WHERE LEN(LTRIM(RTRIM(ProductNumericCode)))>1

    AND ProductID NOT IN (SELECT ID FROM DBCXC.dbo.Produse)

    END

    scopul trigger-ului este de a sincroniza cateva date despre produse intr-o baza de date a unei alte aplicatii (un server de cantarire, implementat de firma care furnizeaza cantare clientului nostru)

    Se pare ca pe server-ul de test baza de date DBCXC avea o versiune mai veche, iar restaurarea acesteia a rezolvat problema.

     

     

    Filed under:
View as RSS news feed in XML
Powered by Community Server (Commercial Edition), by Telligent Systems