webForumDet fria alternativet

Cannot add identity column

11 svar · 379 visningar · startad av Jesper T

Jesper TMedlem sedan nov. 20017 058 inlägg
#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
@ndersMedlem sedan juni 200026 914 inlägg
#2
  1. Borde inte något liknande fungera?:
SELECT ID as FooID, fld2, fld3 INTO #FooTbl FROM BarTbl
Jesper TMedlem sedan nov. 20017 058 inlägg
#3

Hur, var? :)

Jesper TMedlem sedan nov. 20017 058 inlägg
#4

Puff, piff, paff. :)

@ndersMedlem sedan juni 200026 914 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
Jesper TMedlem sedan nov. 20017 058 inlägg
#6
Jesper TMedlem sedan nov. 20017 058 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

?

@ndersMedlem sedan juni 200026 914 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
Jesper TMedlem sedan nov. 20017 058 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...

Jesper TMedlem sedan nov. 20017 058 inlägg
#10

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

Jesper TMedlem sedan nov. 20017 058 inlägg
#11

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

Jesper TMedlem sedan nov. 20017 058 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

:)

123 ms totalt · 3 externa anrop · cache AV · v20260731051352-full.56cc9887
0 ms — hämta statistik (cache)
0 ms — hämta forumlista (cache)
121 ms — hämta tråd, inlägg och bilagor (db)