| Author |
Topic |
|
programer
Posting Yak Master
221 Posts |
Posted - 2010-12-23 : 16:37:43
|
| Hi,my tableId, idaddress, address1, 1, address12, 2, address23, 3, address34, 4, address45, 5, address56, 6, address6If I delete a row address 3, how renumbered idaddress?The result should be:Id, idaddress, address1, 1, address12, 2, address24, 3, address45, 4, address56, 5, address6Regards |
|
|
russell
Pyro-ma-ni-yak
5072 Posts |
Posted - 2010-12-23 : 16:51:32
|
If only one record gets deleted at a time, the basic update is this:UPDATE myTableSET idaddress = idaddress - 1WHERE idaddress > @idaddress; .I'd do it from a stored proc:Create Proc usp_DeleteAddressAndReorder @Id intASSET NOCOUNT ON;DECLARE @idaddress intSELECT @idaddress = idaddress FROM myTable WHERE Id = @Id;DELETE myTable WHERE Id = @Id;UPDATE myTableSET idaddress = idaddress - 1WHERE idaddress > @idaddress;GO If it must be a trigger:Create Trigger aTrigger On myTableFOR DELETEASDECLARE @idaddress intSELECT @idaddress = idaddress FROM deleted;UPDATE myTableSET idaddress = idaddress - 1WHERE idaddress > @idaddress;GO You'll need to add code to handle when more than one record is deleted, but this ought to get ya going in the right direction |
 |
|
|
programer
Posting Yak Master
221 Posts |
Posted - 2010-12-23 : 17:22:37
|
| Create Trigger aTrigger On dbo.Table_1FOR DELETEASDECLARE @ID intSELECT @ID = ID FROM dbo.Table_1;UPDATE dbo.Table_1SET ID = ID - 1WHERE ID > ID;GOthis code not work.When I delete data does not want to renumber, but remainsID13456Id should be12345Why the above code does not work?Regards |
 |
|
|
SwePeso
Patron Saint of Lost Yaks
30421 Posts |
Posted - 2010-12-23 : 17:23:47
|
UPDATE fSET f.idaddress = f.newaddressFROM (SELECT idaddress, row_number() over (order by idaddress) as newaddress FROM Table1) AS f N 56°04'39.26"E 12°55'05.63" |
 |
|
|
programer
Posting Yak Master
221 Posts |
Posted - 2010-12-23 : 17:41:28
|
| When I click delete, writes:No row were deleted |
 |
|
|
programer
Posting Yak Master
221 Posts |
Posted - 2010-12-23 : 17:50:25
|
| This code:UPDATE dbo.Table_1SET ID = f.newaddressFROM (SELECT ID, row_number() over (order by ID) as newaddress FROM dbo.Table_1) AS fdoes not want to renumber |
 |
|
|
khtan
In (Som, Ni, Yak)
17689 Posts |
Posted - 2010-12-23 : 19:09:18
|
follow the code posted by Pesoquote: Originally posted by programer This code:UPDATE dbo.Table_1 fSET ID = f.newaddressFROM (SELECT ID, row_number() over (order by ID) as newaddress FROM dbo.Table_1) AS fdoes not want to renumber
KH[spoiler]Time is always against us[/spoiler] |
 |
|
|
madhivanan
Premature Yak Congratulator
22864 Posts |
Posted - 2010-12-24 : 03:21:31
|
| Why dont you just use it as a SELECT statement?SELECT idaddress, row_number() over (order by idaddress) as newaddress FROM Table1MadhivananFailing to plan is Planning to fail |
 |
|
|
|