Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Hämta lediga nummer i SQL

Postades av 2001-11-15 16:17:00 - Mikael Orm, i forum asp - allmänt, Tråden har 7 Kommentarer och lästs av 874 personer

Hej!
Jag skulle vilja ha förslag på bra sätt att hitta lediga nummer i följande problem:
Anta att du har ett intervall mellan 1-100 som du vill använda som idnummer i SQLServer. I databasen ligger nu följande idnummer lagrade. 3,10,32,56,76,77,89
När du ska skapa en ny post i databasen vill du att programmet ska ta fram ett ledigt nummer i intervallet åt dig. Går detta att lösa med en sql-fråga eller måste jag hämta recordsetet och därefter lopa igenom det?


Svara

Sv: Hämta lediga nummer i SQL

Postades av 2001-11-15 21:48:00 - Johan Svensson

Hej!

Jag och en jobbar-kompis har gjort en store-procidure
som fixar det... vi har nämligen vetal göra samma sak..

jag messar den här i morgon från jobbet

(om du vill använda sp)

Mvh
Johan


Svara

Sv: Hämta lediga nummer i SQL

Postades av 2001-11-15 22:42:00 - Pelle Johansson

Jag skulle spontant säga:

- Id nyckeln bör inte vara beroende något man själv skriver, det bör skötas av ett fält med inställningen (räknare).

Varför?

Jo, för om du tar bort poster och byter id på dom så kommer du i dina andra relaterade tabeller få problem. Låt istället programmet sköta id-t åt dig så kan du alltid vara säker på att hitta din historik.

Gör istället så att om en post raderas, så sätt en flagga i ett fält som markerar att den är raderad. Då finns den kvar för statistik, men visas inte i andra sammanhang.

Hälsningar
/Pelle


Svara

Sv: Hämta lediga nummer i SQL

Postades av 2001-11-16 09:47:00 - Christoffer Hedgate

Jag håller inte med om att man generellt kan säga hur en identifieringsfunktionalitet ska fungera i en databas, det beror väl på vilka krav som finns för just detta fall. Även om man ska ta bort saker eller ej beror ju på ett flertal faktorer. Att alltid låta rader ligga kvar för statistik påverkar ju trots allt prestandan negativt.

Följande SQL sats ger det lägsta lediga numret mellan 1 och 100 i tabellen foo, kolumnen bar. Du måste dock fundera över vad som händer när det inte finns fler lediga värden inom intervallet.

select min(bar) - 1 from foo ext
where not exists (select 1 from foo where bar = ext.bar - 1)
and bar between 2 and 100


Svara

Sv: Hämta lediga nummer i SQL

Postades av 2001-11-16 09:48:00 - Mikael Orm

Jag använder gärna en SP så det vore snällt om du la ut en sådan procedur.
Håller med om att det är ett dumt sätt att jobba på men vad göra när någon annan har byggt det på detta vis.


Svara

Sv: Hämta lediga nummer i SQL

Postades av 2001-11-16 09:53:00 - Mikael Orm

Tusen tack Christoffer!
Det kommer inte att bli något problem med intervallet då det klarar av 99999 poster vilket aldrig kommer att ske.


Svara

Sv: Hämta lediga nummer i SQL

Postades av 2001-11-16 09:59:00 - Christoffer Hedgate

Fy på dig. Du sa det förbjudna ordet 'aldrig'. :)

Nej, men allvarligt talat, se till att du inte 'bygger in dig i ett hörn' så att säga.


Svara

Sv: Hämta lediga nummer i SQL

Postades av 2001-11-16 10:28:00 - Johan Svensson

Här är Store Proceduren jag låvade....

'*********************

CREATE PROCEDURE [SP_NAME] AS

declare @MaxInt int
declare @Cou int
declare @Counter int

Set @Cou = 1

Set @MaxInt = (select Max(Cast(SupplierNo as Int)) from Supplier)

WHILE (@Cou) < @MaxInt

BEGIN

Set @Counter = (SELECT Count(*) From Supplier where SupplierNo = @Cou)

IF @Counter = 0
BREAK
ELSE

BEGIN

Set @Cou = @Cou + 1
CONTINUE

END
END

If @Cou < @MaxInt
Set @Cou = @Cou
ELSE
Set @Cou = @MaxInt + 1

Insert Into Supplier (SupplierNo) Values (@Cou)

Select @Cou

'*********************

Denna genererar ingen nyckel... vara en column där man vill ha
en person/företags nummer typ... tabellen jag givetvis en räknare
också som är ID.....

Mvh
Johan


Svara

Nyligen

  • 19:13 Международная перевозка грузов
  • 00:01 DL Van Tuning | Exclusive Body Kit
  • 12:08 Indian casino
  • 04:14 Vad finns det för kratomalternativ
  • 14:16 Indian online casino
  • 14:15 Indian online casino
  • 08:28 Butiksskyltar: Hur upplever utbude
  • 22:31 Slappna av

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 864
27 962
271 767
580
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies