Modifying a primary key

sabzamsabzam Member Posts: 1,149
I need to create a codunit to modify the Line no. in a table where Line No. forms part of the primary key. I have been using modify but since I am chaning the primary key value it is obviously not finding it thus producing an error. What should I do to go round this problem?

Comments

  • KowaKowa Member Posts: 923
    You have to use the RENAME function when PK Fields are modified.

    If the field to be changed has no table relation, it is also possible to copy the record , change the fields value, insert the new record and delete the old one. That is much faster than the RENAME function, but it always has to be checked with the Developer Toolkit that the fields values are not used by other tables. In your case, for the line no., this should usually not represent a problem.
    Kai Kowalewski
  • Alex_ChowAlex_Chow Member Posts: 5,063
    For which table are you renaming the Line No.? Is it a custom table? Or the regular sales line and purchase line table?

    At any rate, I agree with Kowa, deleting and re-inserting is definately faster than renaming, since renaming scans the entire database to change the values that it's referecing to.
  • sabzamsabzam Member Posts: 1,149
    Hi Everybody,

    I have used the rename function. It works but with a problem. In the table I have got some line numbers which were created using the autosplit key (i.e. records were created in between other records). For some reason these numbers are not being changed. Anyone has got any idea why this is occuring?
  • DenSterDenSter Member Posts: 8,305
    Those records can be modified just like any other records, so the problem would be in your code. Show us the code and we'll see if we can help you out.
  • MbadMbad Member Posts: 344
    The problem with modifying the primary key often is that your sorting gets screwed. Make sure you make another record variable and do the rename on that instead of the record variable you do the next on.
  • todrotodro Member Posts: 117
    Kowa wrote:
    If the field to be changed has no table relation, it is also possible to copy the record , change the fields value, insert the new record and delete the old one.
    but one should check for any code in the rename trigger so this does not get lost, in case it's needed to be executed...
    Torsten
    MCP+I, MCSE NT, Navision MCT (2004,2005)
Sign In or Register to comment.