Modifying a primary key

sabzam
sabzam 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

  • Kowa
    Kowa Member Posts: 926
    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_Chow
    Alex_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.
  • sabzam
    sabzam 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?
  • DenSter
    DenSter Member Posts: 8,307
    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.
  • Mbad
    Mbad 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.
  • todro
    todro 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)