ďťż
 
Zagadka, rekrutacja ďťż
 
Zagadka, rekrutacja
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

Zagadka, rekrutacja



Tomek - 24-12-2006 00:38
Zagadka, rekrutacja
  Witam
Pewna firma szuka programisty sql i umiescila w sieci taka zagadke:
Trzeba znaleźć błąd. I tylko tyle. Ja sie poddałem, jeszcze jestem za "miętki"
Miłej zabawy. Pozdrawiam

CREATE TABLE [Users] (
[Uid] [int] IDENTITY(1, 1) NOT NULL,
[Name] [nvarchar](50) NOT NULL,
[Address] [nvarchar](50) NOT NULL,
CONSTRAINT [PK_Users] PRIMARY KEY CLUSTERED ([Uid] ASC))
GO

CREATE TABLE [Logs] (
[LogID] [int] IDENTITY(1, 1) NOT NULL,
[Date] [datetime] NOT NULL,
[Uid] [int] NOT NULL,
CONSTRAINT [PK_Logs] PRIMARY KEY CLUSTERED ([LogID] ASC))
GO

CREATE TRIGGER [LogUsersInsert] ON [Users] AFTER INSERT AS
DECLARE @uid int
SELECT @uid = Uid FROM INSERTED
INSERT INTO [Logs]([Date], [Uid]) VALUES (GETDATE(), @uid)
GO

CREATE PROCEDURE InsertUser
@name NVARCHAR(50),
@address NVARCHAR(50),
@userID INT OUTPUT
AS
INSERT INTO [Users]([Name], [Address])
VALUES (@name, @address)
SELECT @userID = @@IDENTITY
GO

--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/





zarafiq@poczta.onet.pl - 24-12-2006 00:38

 
Niedawno ktoś o tym pisał na grupie:
SELECT @uid = Uid FROM INSERTED

Pozdrawiam
zarafiq

--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl




Robert Winkler - 24-12-2006 00:38

  > Niedawno ktoś o tym pisał na grupie:
> SELECT @uid = Uid FROM INSERTED

Drobne uchylenie dobrych zasad znajdujące się w trigerze
w porównaniu z ktytycznym błedem w procedurze to drobiazg.
Biorąc pod uwage sposób wypełnania tabeli [Users]
sugerujacy iż wpisywany będzie do niej w jednym query tylko jeden wiersz.
--
____________
Robert Winkler




zarafiq@poczta.onet.pl - 24-12-2006 00:38

  > > Niedawno ktoś o tym pisał na grupie:
> > SELECT @uid = Uid FROM INSERTED
>
> Drobne uchylenie dobrych zasad znajdujące się w trigerze
> w porównaniu z ktytycznym błedem w procedurze to drobiazg.
> Biorąc pod uwage sposób wypełnania tabeli [Users]
> sugerujacy iż wpisywany będzie do niej w jednym query tylko jeden wiersz.

Hmm... przyznam że tam nic nie widzę, Microsoft zaleca używać SET zamiast
SELECT ale chyba nie nazwałbyś tego błędem krytycznym.

Pozdrawiam
zarafiq

--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl





zarafiq@poczta.onet.pl - 24-12-2006 00:38

 
> Hmm... przyznam że tam nic nie widzę, Microsoft zaleca używać SET zamiast
> SELECT ale chyba nie nazwałbyś tego błędem krytycznym.
>

Sam sobie odpowiem :)
@@IDENTITY zwróci wartość IDENTITY rekordu wstawionego przez TRIGGER :)

Pozdrawiam
zarafiq

--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl




Robert Winkler - 24-12-2006 00:38

  > Sam sobie odpowiem :)
> @@IDENTITY zwróci wartość IDENTITY rekordu wstawionego przez TRIGGER :)

Gratuluje,
Dlatego w T-SQL'u nie stosuje się już @@IDENTITY tylko SCOPE_IDENTITY()
SET @userID = SCOPE_IDENTITY()

a triger:
CREATE TRIGGER [LogUsersInsert] ON [Users] AFTER INSERT AS
SET NOCOUNT ON
DECLARE @insertData DATE
SET @insertData = GETDATE()
INSERT INTO [Logs]([Date], [Uid])
SELECT @insertData, Uid FROM INSERTED
GO

Prawda że proste.

--
____________
Robert Winkler




Maciej Łuszczyński - 24-12-2006 00:38

 
> Witam
> Pewna firma szuka programisty sql i umiescila w sieci taka zagadke:
> Trzeba znaleźć błąd. I tylko tyle. Ja sie poddałem, jeszcze jestem za "miętki"
> Miłej zabawy. Pozdrawiam
>
> CREATE TABLE [Users] (
> [Uid] [int] IDENTITY(1, 1) NOT NULL,
> [Name] [nvarchar](50) NOT NULL,
> [Address] [nvarchar](50) NOT NULL,
> CONSTRAINT [PK_Users] PRIMARY KEY CLUSTERED ([Uid] ASC))
> GO
>
> CREATE TABLE [Logs] (
> [LogID] [int] IDENTITY(1, 1) NOT NULL,
> [Date] [datetime] NOT NULL,
> [Uid] [int] NOT NULL,
> CONSTRAINT [PK_Logs] PRIMARY KEY CLUSTERED ([LogID] ASC))
> GO
>
> CREATE TRIGGER [LogUsersInsert] ON [Users] AFTER INSERT AS
> DECLARE @uid int
> SELECT @uid = Uid FROM INSERTED
> INSERT INTO [Logs]([Date], [Uid]) VALUES (GETDATE(), @uid)
> GO
>
> CREATE PROCEDURE InsertUser
> @name NVARCHAR(50),
> @address NVARCHAR(50),
> @userID INT OUTPUT
> AS
> INSERT INTO [Users]([Name], [Address])
> VALUES (@name, @address)
> SELECT @userID = @@IDENTITY
> GO

Fajne.

Obstawiam bledna wartosc w zmiennej @UserID - @@IDENTITY przejmie wartosc z
rekordu dodanego do logu (trigger jest after insert). Zamiast @@IDENTITY
polecam stosowac SCOPE_IDENTITY() - mniej od tego boli glowa.

To co, dostane ta robote ;)

Pozdrawiam
Maciek
--
*** A czym się różni Cray od normalnego peceta?
*** Tym, że Cray wykonuje pętle nieskończone w 10 sekund.




Jacek Stawicki - 24-12-2006 00:38

 
Użytkownik "Tomek" <tomasz_123@NOSPAM.gazeta.pl> napisał w wiadomości
news:embn4o$9ir$1@inews.gazeta.pl...
> Witam
> Pewna firma szuka programisty sql i umiescila w sieci taka zagadke:
> Trzeba znaleźć błąd. I tylko tyle. Ja sie poddałem, jeszcze jestem za
> "miętki"
> Miłej zabawy. Pozdrawiam

> CREATE PROCEDURE InsertUser
> @name NVARCHAR(50),
> @address NVARCHAR(50),
> @userID INT OUTPUT
> AS
> INSERT INTO [Users]([Name], [Address])
> VALUES (@name, @address)
> SELECT @userID = @@IDENTITY
> GO

parsujac w "glowie", zamiast
SELECT @userID = @@IDENTITY
uzyc
SELECT @userID = scope_IDENTITY()
?
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    zagadka do rozwiazania - dlaczego licznik strony sie resetuje? Clipper - Zagadka z Directory() [OT] Zagadka [OT] Zagadka 2 Agencja "GoodFellows" - dziwna rekrutacja grafikow Baza kodow pocztowych MSDE i uprawnienia phpMyAdmin zadaje =?ISO-8859-2?Q?z=B3e_zapytania=2E=2E=2E_Dl?==?ISO-8859-2?Q?aczego=3F?= Obserwator i Image Symfonia -Pervasive -jak sie do tego dobrac ?
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • oefg.opx.pl
  • Cytat

    Decede mihi sole - nie zasłaniaj mi słonca.
    Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści
    Hoc fac - tak czyń.
    A tergo - od tyłu; z tyłu.
    I czarne włosy posiwieją. Safona

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com