webForumDet fria alternativet
Logga in / Bli medlem

Cannot add identity column

Databaser & SQL

11 svar · 379 visningar · startad av Jesper T

Medlem sedan nov. 20017 144 inlägg
Trådstart#1

Två frågor.
1. Jag har en kolumn i tabellen tbl (fetmarkerad i kod) som heter id, den krockar med temptabellens kolumn id, går det att byta namn på temptabellens kolumn (id) ?
Eller hur gör man här?
Byta namn på kolumnen i tabellen tbl är uteslutet.

2. Går denna procedur att göra om till en funktion så att man bara skickar in sql-satsen?
I.s.f. hur?

CREATE PROCEDURE Paging 
(
@num_rec_page int, @n_page int
)
AS
SET NOCOUNT ON
BEGIN 
declare @max_rec as int
declare @min_rec as int
declare @num_tot_page as int
declare @num_tot_rec as int
set @max_rec = @n_page*@num_rec_page
set @min_rec = (@max_rec-@num_rec_page)+1
set @num_tot_page = 0
set @num_tot_rec = 0

If exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[#ret_tbl]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[#ret_tbl]

SELECT IDENTITY(int, 1,1) AS ID_Num, tmp_tbl.*
INTO #ret_tbl
FROM ([b]SELECT * From tbl[/b]) as tmp_tbl

select * from #ret_tbl WHERE ID_Num >= @min_rec AND ID_Num <= @max_rec
select @num_tot_rec = MAX(ID_Num) from #ret_tbl
set @num_tot_page = (@num_tot_rec/@num_rec_page) + 1
select @num_tot_page as NumTotPage

END
Medlem sedan juni 200032 967 inlägg
#2
  1. Borde inte något liknande fungera?:
SELECT ID as FooID, fld2, fld3 INTO #FooTbl FROM BarTbl
Medlem sedan nov. 20017 144 inlägg
#3

Hur, var? :)

Medlem sedan nov. 20017 144 inlägg
#4

Puff, piff, paff. :)

Medlem sedan juni 200032 967 inlägg
#5

Jesper T skrev:

Hur, var? :)

Hmm, var det inte den här delen du frågade om?

SELECT IDENTITY(int, 1,1) AS ID_Num, tmp_tbl.*
INTO #ret_tbl
FROM (SELECT * From tbl) as tmp_tbl
Medlem sedan nov. 20017 144 inlägg
#6
Medlem sedan nov. 20017 144 inlägg
#7

Men vad är skillnaden på:

SELECT IDENTITY(int, 1,1) AS ID_Num, tmp_tbl.*
INTO #ret_tbl
FROM (SELECT * From tbl) as tmp_tbl

och:

SELECT Id AS ID_Num,tmp_tbl.*
INTO #ret_tbl 
FROM (SELECT id From search1) as tmp_tbl

?

Medlem sedan juni 200032 967 inlägg
#8

Hmm? Nu blir jag ju så där förbryllad igen.

Får du det inte som du vill om du specificerar fältnamnen istället för att använda tmp_tbl.* (och givetvis struntar i id-fältet)? Typ så här då:

SELECT IDENTITY(int, 1,1) AS ID_Num, tbl.fält1, tbl.fält2, tbl.fält3, tbl.fält4, tbl.fält5
INTO #ret_tbl
FROM tbl
Medlem sedan nov. 20017 144 inlägg
#9

Visst, men trixet är att få med id-kolumen ifrån tabellen search1.
I värsta, värsta, mest eländigaste fall så får jag byta namn på kolumnen, men det suger fett, då en massa kod och en massa sp:s använder namnet "id" på den tabellen...

Medlem sedan nov. 20017 144 inlägg
#10

Måste den nedrans temptabellen döpa sin id-kolumn till id?

Medlem sedan nov. 20017 144 inlägg
#11

Det skulle vara bra att veta innan jag gör om hela baletten.
Ingen som vet det?
:)

Medlem sedan nov. 20017 144 inlägg
#12

Jaaaaaa!
Det går att få med id-fältet.

SELECT IDENTITY(int, 1,1) AS ID_Num, tbl.id[b]+0 as foo[/b], tbl.fält2, tbl.fält3, tbl.fält4, tbl.fält5
INTO #ret_tbl
FROM tbl

:)

261 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
119 ms — ändringar (db)