[MSSQL] Stored procedure
Kusyn - 09-12-2005 19:53
[MSSQL] Stored procedure
Witam !
Czy istniej możliwość napisania procedury, która w obrębie tej samej tabeli skopiuje rekord, lub grupę rekordów według zadanego kryterium. Tabela ma jedno z pól typu identity. Myślałem o: INSERT INTO aa SELECT * FROM aa WHERE id=@IdPoz. Napisałem coś podobnego, ale czepia się o pole identity.
Pozdrawiam Wojtek
Piglet - 09-12-2005 19:53
Użytkownik "Kusyn" <kusynNoSpam@poczta.onet.pl> napisał w wiadomości news:dn44s5$dfh$1@news.onet.pl... > Witam ! > > Czy istniej możliwość napisania procedury, która w obrębie tej samej tabeli > skopiuje rekord, lub grupę rekordów według zadanego kryterium. Tabela ma jedno z > pól typu identity. > Myślałem o: > INSERT INTO aa SELECT * FROM aa WHERE id=@IdPoz. > Napisałem coś podobnego, ale czepia się o pole identity. >
Trzeba by "wylaczyc" pole identity z tej operacji, czyli: INSERT INTO aa (pole1,pole2,pole-n) SELECT pole1,pole2,pole_n FROM aa WHERE id=@IdPoz
-- Pozdrawiam Piglet
Kusyn - 09-12-2005 19:53
>> Czy istniej możliwość napisania procedury, która w obrębie tej samej > tabeli >> skopiuje rekord, lub grupę rekordów według zadanego kryterium. Tabela ma > jedno z >> pól typu identity. >> Myślałem o: >> INSERT INTO aa SELECT * FROM aa WHERE id=@IdPoz. >> Napisałem coś podobnego, ale czepia się o pole identity. >> > > > Trzeba by "wylaczyc" pole identity z tej operacji, czyli: > INSERT INTO aa (pole1,pole2,pole-n) > SELECT pole1,pole2,pole_n FROM aa WHERE id=@IdPoz >
No i sprawa się wyjaśniła. A ja chciałem iść na łatwiznę, aby nie wklepywać tych wszystkich pól. :) To zapytam dalej. Tabela w której kopiuję dany rekord jest powiązana z inną tabelą relacją jeden do wielu. Czy kopiując rekord jak napisałeś powyżej istnieje sposób na uzyskanie nowej wartości pola id (autoincrement) skopiowanego rekordu i skopiowanie wszystkich rekordów w tabeli podrzędnej ?
Pozdrawiam Wojtek
Piglet - 09-12-2005 19:53
> > No i sprawa się wyjaśniła. A ja chciałem iść na łatwiznę, aby nie wklepywać tych > wszystkich pól. :) > To zapytam dalej. Tabela w której kopiuję dany rekord jest powiązana z inną > tabelą relacją jeden do wielu. Czy kopiując rekord jak napisałeś powyżej > istnieje sposób na uzyskanie nowej wartości pola id (autoincrement) skopiowanego > rekordu i skopiowanie wszystkich rekordów w tabeli podrzędnej ? >
Wykorzystaj trigger AFTER INSERT i tabelę INSERTED
-- Pozdrawiam Piglet
Jacek Czapla - 09-12-2005 19:53
zawsze można pobrać wartość klucza select @@identity as klucz from ...
Poszukaj @@IDENTITY w BOL.
-- _*Jacek Czapla*_
Kusyn - 09-12-2005 19:53
> zawsze można pobrać wartość klucza > select @@identity as klucz from ... > > Poszukaj @@IDENTITY w BOL. > > -- > _*Jacek Czapla*_
Nie ukrywam, że dopiero startuje z MSSQL i chyba sprawa mnie przerośnie. Niemniej dziękuję za podpowiedzi. Spróbuję powalczyć.
Pozdrawiam Wojtek
Bartek Dajewski - 09-12-2005 19:53
Cześć.
Użytkownik "Kusyn" <kusynNoSpam@poczta.onet.pl> napisał w wiadomości news:dn46sl$kql$1@news.onet.pl... > >> Czy istniej możliwość napisania procedury, która w obrębie tej samej > > tabeli > >> skopiuje rekord, lub grupę rekordów według zadanego kryterium. Tabela ma [...] > To zapytam dalej. Tabela w której kopiuję dany rekord jest powiązana z inną > tabelą relacją jeden do wielu. Czy kopiując rekord jak napisałeś powyżej > istnieje sposób na uzyskanie nowej wartości pola id (autoincrement) skopiowanego > rekordu i skopiowanie wszystkich rekordów w tabeli podrzędnej ?
A może prościej będzie skorzystać z SET IDENTITY_INSERT...
-- Pozdrawiam :-) Bartek
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
Zdalny =?ISO-8859-2?Q?dost=EAp_do_MSSQL_bez_zarz=B1dzani?==?ISO-8859-2?Q?a?=
[MSSQL] =?ISO-8859-2?Q?zgodno=B6ci_z_licencjami_Microsoft_?==?ISO-8859-2?Q?SQL_Server?=
[MSSQL 2k] - jak =?ISO-8859-2?Q?pod=B3=B1czy=E6_serwer_na_?==?ISO-8859-2?Q?porcie_innym_ni=BF_1433=3F?=
MSSQL Express czy Oracle Express
[MSSQL] ACCESS - SQL =?ISO-8859-2?Q?B=B3ad_w_konwersji_lic?==?ISO-8859-2?Q?zb?=
[MSSQL 2000] =?ISO-8859-2?Q?wywo=B3anie_procesu_z_poziomu_?==?ISO-8859-2?Q?job=27a?=
[MSSQL 2K] =?ISO-8859-2?Q?Wp=B3yw_ustawie=F1_regionalnych_?==?ISO-8859-2?Q?serwera_na_zapytania?=
Pobierananie danych z innej bazy danych w MSSQL
Migracja MSSQL 2005 CTP na 2005 Express
MSSQL , funkcja pobierajaca sama date (bez czasu) w funkcji
zanotowane.pldoc.pisz.plpdf.pisz.plczterowers.keep.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 |
|