Hirdetés
- Milyen asztali (teljes vagy fél-) gépet vegyek?
- NVIDIA GeForce RTX 5080 / 5090 (GB203 / 202)
- 3D nyomtatás
- Végleg lemondott a régi gépekről a Steam
- LG LCD és LED TV-k
- Milyen monitort vegyek?
- Meghalt a Windows 10, éljen a Windows 10!
- Kormányok / autós szimulátorok topikja
- Azonnali alaplapos kérdések órája
- Kellemes karácsonyi ünnepeket!
Új hozzászólás Aktív témák
-
-
-
tm5
tag
válasz
Apollo17hu
#4895
üzenetére
Jó ez teljesen, nem lesz ez annyira lassú. Picit mondjuk lehet még egyszerűsíteni rajta:
select sum(value)
,case
when sector in (2, 3, 4) then 2
else sector
end sector_
from test
group by
case
when sector in (2, 3, 4) then 2
else sector
end -
válasz
Apollo17hu
#4895
üzenetére
nagy erőkkel lassítod a lekérdezést?

miért nem group by 2? -
kw3v865
senior tag
Sziasztok!
Adott egy tábla:
CREATE TABLE test(value integer,sector integer,id integer NOT NULL DEFAULT nextval('test_id_seq'::regclass),CONSTRAINT pk PRIMARY KEY (id));A sector (értéke 1 - 5-ig terjedhet).
Egy olyan lekérdezést szeretnék írni, amely összegzi a value mező értékeit és csoportosítja szektor alapján az adatokat, de úgy, hogy a 2-es, 3-as és 4-es szektort összevonja, azaz egyben kezelje. Tehát ne 5, hanem 3 sort adjon vissza.
Nem egy bonyolult történet, de ezt egy lekérdezésben akarom megvalósítani, az eredeti tábla módosítása nélkül.SELECT SUM(value), sector FROM test GROUP BY sector;Szerintetek hogyan lehet ezt a legegyszerűbb, leggyorsabb módon megvalósítani? Elég sok rekord lesz a táblában.
-
RedHarlow
aktív tag
válasz
Apollo17hu
#4889
üzenetére
Így néz ki a lekérdezésem:
SELECT a.datum, b.data1, b.data2FROM a, bWHERE a.datum = b.datum(+)and b.notes = 007;És ugyan úgy 3 sor jön le és nem értem hogy miért. :/
-
kw3v865
senior tag
Sziasztok!
PostgreSQL-ben timestamp indexelésre szerintetek melyik a legoptimálisabb index típus? BTREE helyett érdemes lehet BRIN-t használni? Vagy valami mást?
-
cattus
addikt
válasz
Apollo17hu
#4883
üzenetére
Bocsi, a szint az ugyanaz mint a szobaszám, csak a kódban is felváltva használom. Minden mező egy táblához tartozik igen.
Az egész amúgy egy foglaló rendszerhez lesz, ahol szintenként lehet adott időpontra foglalni szobát, és adott szinten adott idősávban egyszerre egy foglalás lehet. És ehhez kéne megjelenítenem minden szinthez az időben következő eseményt ami még nem kezdődött el.
-
Apollo17hu
őstag
Van esemény, szobaszám, kezdő és befejezési időpont. Eddig oké. De mi az a szint? Az is egy külön attribútum külön mezőben? Minden mező egy adattáblában van?
Vmi ilyesmire lesz szükséged, ahonnan a megképzett "sorrend" mezőnek veheted később a minimumát:
RANK() OVER(PARTITION BY szint ORDER BY kezdo_idopont) AS sorrend
Arra kell figyelni, hogy RANK() esetén több minimum is lehet, ha a sorrendiség nem egyértelmű. -
cattus
addikt
Hali!
Egy adatbázisban vannak tárolva események mindegyikhez tartozik egy szobaszám (3 és 18 között fixen), plusz egy kezdő és befejezési időpont. Arra lenne szükségem, hogy minden szintre lekérdezzem a legközelebbi jövőbeli eseményt (ha nincs ilyen, akkor null legyen).
Elsőre arra gondoltam, hogy minden szintre futtatok egy select-et a megfelelő szűrőkkel és abból kiveszem az első rekordot, de gondoltam megkérdezem, hogy tud-e valaki ennél egy szebb megoldást?
-
lenoma
aktív tag
dbForge Query Builder for SQL Server
helyett tudtok ajánlani más programot kezdőknek? -
Ispy
nagyúr
Ez a megoldás azért lassú, mert csináltál egy Descartes-szórzatot a két táblából, azaz minden halmaz minden elemét összeköti szépen minden halmaz minden elemével (vesszővel felsorolás). A helyes ahogy írtad is az union, csak figyelni kell, mert ha nincsen all, akkor az azonos rekordokat csak egyszer hozza a halmazokból.
-
Taci
addikt
Sziasztok!
A segítségeteket szeretném kérni:
Adott több tábla, mindegyikben több rekord, minden rekordnak sok mezője. A táblákban a mezők ugyanolyan névvel, típussal vannak létrehozva és feltöltve.
Ezek közül az egyik egy időbélyegző, hogy a rekord mikor került az adatbázisba.Ha csak az egyik táblából kérdezem le az adatokat, villámgyors minden:
SELECT * FROM table_1 ORDER BY date DESC LIMIT 4 OFFSET 4Szeretném kettő vagy akár az összes többi táblából lekérni az adatokat, és ezeket dátum szerint rendezve megjeleníteni.
Viszont ha kettő vagy több táblából kérem le ezeket az adatokat, egyrészt nagyon-nagyon lassú, másrészt nem a jó adatokat, vagy nem a jó sorrendben adja vissza.Ezzel a lekérdezéssel próbáltam:
SELECT * FROM table_1, table_2 ORDER BY table_1.date DESC LIMIT 4 OFFSET 4Itt elsőre azzal próbáltam, hogy
ORDER BY date, de azt mondta, ez nem helyes így, mert adatemező több táblában is megtalálható. Ezért próbálkoztam így aztán.Egészen biztosan nem ez a jó módja a lekérdezésnek.
Hogyan kell ezt jól megcsinálni? Összesen egyszerre 4 rekordot kérek csak le, ennek villámgyorsnak kellene lennie, úgy, ahogy amúgy 1 táblánál az is.Köszönöm előre is a segítséget.
-
tm5
tag
A feladatsor amit átküldtél tényleg elég részletes, és valszeg több este is le kell ülnöd a gép elé, hogy meglegyél vele 1 hét alatt. Viszont mindent amit ez a felkészítő feladatsor követel biztosan benne van a tananyagban, vagy a google kiköpi, ha okosan keresel.
Szóval ma rugjál be és dühöngd ki magad, hogy mégis mit gondol ez a tanár és holnap kezd el csinálni, mert csak így fogsz tudni végezni vele.
fogd fel etzt a felkészítő feladatsort, hogy egy labogyakorlat.
Jártam jó pár adatbázis tanfolyamon az elmúlt 30 évben és azok jobbára 3-5 nap alatt nyomták le ezt az anyagot, de tele volt tűzdelve laborgyakorlatokkal, amiben ehhez hasonló feladatok voltak. A tanköny + a tanár segítségével megoldottuk. Most neked a tanár helyett a google marad. Viszont amit 1x megcsinálsz arra tuti emlékezni fogsz, legalább nagyvonalakban. Arra elég, hogy túléld a 36 perces vizsgákat. Ennyi időbe a feladatok töredéke fog beleférni.
Hidd el csak az segít, ha elkezded csinálni. -
lenoma
aktív tag
Elküldöm Neked a 2 tesztsort véleményezésre.
A főiskolai tanár 2 hét alatt lenyomott kb 1 szemeszternyi tananyagot.
Itt már a vizsga felkészítésről van só a tanultak alapján.
A tanár jelezte is, hogy ez a teszt Halálos iramban miközben a vizsga 45km/h-val városi közlekedés lesz ami amúgy az 5-ös Junior Rendszerüzemeltető szint helyett 4-es szakmunkásképző Juniur rendszerüzemeltető képzés az állami programozó képzés keretében.
Célom, hogy a sulitól a valós vizsgára felkészítést kérjek és nem egy maximalista tanár elvárásait.
Amúgy a képzés után lehet szakosodni és ott két hónapig egy tárgyat tanulni intenzíven, szerintem annak a kérdésit tolta most elénk, a tanultakból /0-2hét/ oldjuk meg önállóan és adjuk le még ezen a héten. Csak nála volt bukás a szintfelmérőkön /kb 50%/a többin szinte mindenki átment.
A többi tárgy simán megy ma írtam 100%-os 3. negyedéves állami szintfelmérőt /SQL nem volt benne/ -
lenoma
aktív tag
Sziasztok!
Profi SQL-est keresek aki megnézne 2db tesztsort, hogy mennyire normális a tanárunk ha 2 hét után elénk teszi ezt vizsga felkészítésnek.
Tippre fél szemeszternyi képzés kérdései 2 hetes nulláról képzésre.
A tanárunk zseniális szakember csak nem kicsit maximalista. -
RedHarlow
aktív tag
Sziasztok,
SQL-ben lévő változó értékét, hogy tudom php-ben módosítani? Arról van szó, hogy ha jól tudom az oracle ha megjegyzi az adott query-t legközelebb gyorsan le fog futni de mivel nekem szükséges lenne a hónapokat állíthatóra tenni így mindig újként érzékelné, azonban ha jól gondolom egy változó lenne benne a dátum akkor mindig az alap terv szerint futna le, ezt a változót viszont módosítanom kellene valahogy php-vel? Tudtok ebben segíteni, hogy ez hogy is néz ki? Van e egyáltalán ilyen? Esetleg egy link is elég, ahol erről bővebben olvashatok.
Előre is köszönöm a segítséget. -
válasz
Apollo17hu
#4866
üzenetére
-
Apollo17hu
őstag
Olyan oldalt vagy esetleg egyetemi jegyzetet tudtok, ami viszonylag nehezebb sql-lekérdezési feladatokat/példákat tartalmaz? Elsősorban a táblakapcsolatok, többszörös JOIN-ok, egymásba ágyazások érdekelnének.
-
tm5
tag
Az a helyzet, hogy sqlfiddleben vagdostam össze, internetes szösszenetek alapján.
Nem használtam MSSQL-t az elmúlt 8 évben, bár lehet a következő munkám már megint ott lesz.
Oracleben nyomultam mostanság, ott elég jó ez a FORMAT() dolog és valami hasonlót kerestem MSSQL-ben is. -
martonx
veterán
-
picur10
aktív tag
válasz
Apollo17hu
#4856
üzenetére
bocsánat, az lemaradt, hogy mssql-re kellene
-
picur10
aktív tag
Egy kis select segítséget kérek.

Óra és perc van külön numerikus mezőben letéve. Hogy lehet a legegyszerűbben óó:pp formátumban stringként kiíratni? Úgy szeretném, hogy mindig két-két karakter legyen, tehát pl. a dél ne így nézzen ki: 12:0
Köszi! -
martonx
veterán
PostgreSQL is the DBMS of the Year 2020 (db-engines.com) érdekességképpen
-
DS39
nagyúr
jó az irány.
még group by-old a külső select-et névre és telefonszámra, és az id-t MIN()-eld.
ezt mentsd el egy temp táblába, majd a temp táblához join-old be a partner táblát, név és telefonszám alapján + temp.ID <> partner.ID
így meglesz egy rekordban a duplikált partner régi és új id-ja, ezzel már könnyen meg tudod írni az update-t, hogy a kölcsönzés táblában mit mire kell cserélni.
+ én még a partner táblát bővíteném egy oszloppal, hogy törölt / archív, és a régi id-ek megjelölném, így később ki lehet őket szűrni. -
Kommy
veterán
Szeretném megcsinálni azt, hogy vannak partnereink akik sajnos valami folytán kétszer kerültek be az adatbázisunkba és szeretném a kölcsönzéseiket összevonni az újabb regisztrációba.
Név és telefonszám alapján le is tudom kérdezni a listát ahol látom az összes duplikációt.
A lényeg az lenne, hogy a régebbi partnerhez tartozó kölcsönzéseket átrakjam az új partnerre.
A kölcsönzések tábla tartalmazza természetesen a partnerid-t, így ott kellene valahogy kicserélnem a régi az újra.Itt e lekérdezés a duplikációkra itt szépen látom az id-t, a nevet és a telefonszámot.
SELECT
y.id,y.nev, y.Kapcsolat
FROM Partnerek y
INNER JOIN (SELECT
nev, kapcsolat, COUNT(*) AS CountOf
FROM Partnerek
GROUP BY nev, Kapcsolat
HAVING COUNT(*)>1
) dt ON y.kapcsolat=dt.kapcsolat order by Kapcsolat
[kép] -
tm5
tag
Amúgy csak megérteni szeretnéd, vagy átírni?
(Kis csiszolgatás után) beraktam beraktam sqlfiddle-be a mintádat, de nem sok értelmeset produkált: (null),1,...6-ig hozta az összes ID-t
Ha esetleg szeretnél hierarchiát építeni SQL Serverben arra ott a rekurzív CTE
-
Louro
őstag
Sziasztok!
Bár ritkán adom fel, de ez most kifogott rajtam és a Google se segített.
Alap: SQL Server
Minta:CREATE TABLE t1 AS (id int,name varchar,dependency int);INSERT INTO t1 VALUES (1,'n1',0);INSERT INTO t1 VALUES (2,'n2',1);INSERT INTO t1 VALUES (3,'n3',1);INSERT INTO t1 VALUES (4,'n4',2);INSERT INTO t1 VALUES (5,'n5',3);INSERT INTO t1 VALUES (6,'n6',3);SELECT DISTINCT ca.idFROM t1LEFT JOIN t1 AS t2 ON t2.ID = t1.dependencyLEFT JOIN t1 AS t3 ON t3.ID = t2.dependencyCROSS APPLY (SELECT t1.ID UNION ALLSELECT t2.ID UNION ALLSELECT t3.ID ) AS c (id);A nagy kérdés, hogy én komfortosabb vagyok a JOIN-okkal, mint az APPLY-okkal. Ezt bevallom értelmezni se tudom. Az megvan, hogy egy hierarchiát épít, de a CROSS APPLY esetén a (id) kicsit fura, mert melyik ID-val köti össze a CROSS APPLY-ban lévő ID-t? Vagy duplikálna? A kód szerzője ismeretlen

Valami ilyesmi lenne?
SELECT DISTINCT ca.idFROM t1LEFT JOIN t1 AS t2 ON t2.ID = t1.dependencyLEFT JOIN t1 AS t3 ON t3.ID = t2.dependencyLEFT JOIN (SELECT t1.ID UNION ALLSELECT t2.ID UNION ALLSELECT t3.ID ) AS c ON t1.ID = c.ID OR t2.ID = c.ID OR t3.ID; -
nyunyu
félisten
válasz
#29736192
#4834
üzenetére
Unió az VAGYlagos kapcsolatot jelent, ÉS meg metszetet.
Neked az kell, hogy egyik regexpnek sem felel meg, azaz -regexp1 ÉS - regexp2 ÉS -regexp3... (komplementerek/negáltak metszete!)
Ezt ha levezeted, akkor azzal egyenlő, hogy -(regexp1 VAGY regexp2 VAGY regexp3...) (unió komplementere/negáltja!)Mivel a táblák sorai között mindig VAGYlagos kapcsolat van (tábla a sorainak uniója!), így ez utóbbi azt jelenti, hogy az érték nincs a regexp tábládban.
A táblából meg úgy kapjuk meg a B-ben nem szereplő értékeket, hogy LEFT JOIN ... IS NULL. -
nyunyu
félisten
válasz
bambano
#4835
üzenetére
Ezzel viszont vissza is kanyarodtunk a kurzoron végigiterálós megoldáshoz, amit macerásabb megírni, mint az előbbi jólfésült selectet

nagy vonalakban valami ilyesmi:
declare
cursor c is
select regexp
from regexptabla
order by gyakorisag desc;
r varchar2(100);
begin
truncate temptabla;
open c
loop
fetch c into r;
exit when c%NOTFOUND;
insert into temptabla (voltmar)
select e.ertek
from eredetitabla e
left join temptabla t
on e.ertek = t.voltmar
where t.voltmar is null
and e.ertek ~ r;
end loop;
close c;
select e.ertek
from eredetitabla e
left join temptabla t
on e.ertek = t.voltmar
where t.voltmar is null;
end;(Nem vágom a postgre szintaxisát.)
-
válasz
#29736192
#4830
üzenetére
mindig jó ötlet az adatbáziskezelőn belül tartani a melót.
tehát ha meg tudod úgy oldani a programot, hogy ne kelljen kihúzgálni az adatot az sql szerverből, akkor az jobb.ezzel szemben van az, hogy jelen esetben is elszállhat a memóriaigény.
legegyszerűbb kipróbálni és megmérni a lehetséges verziókat.
nálad probléma lehet, hogy ebben a megoldásban a regexp rámegy azokra a sorokra is, amiket egy korábbi regexp már kizárt, ami elég nagy pazarlás. tehát ha külső nyelvből csinálnád a keresést, akkor lehet, hogy egyszerűbb lenne úgy, hogy csinálsz egy temporális táblát, abba belerakod az összes adat azonosítóját, amit az első regexppel szűrtél és még kell, majd utána a többivel sorban kiszórod belőle azt, ami nem kell. ha a regexpeket gyakoriság szerinti csökkenő sorrendben teszteled, akkor az hatékonyabb lesz.
-
nyunyu
félisten
válasz
#29736192
#4832
üzenetére
Jó lesz az, csak halmazokban kéne gondolkozni.
Neked a regexp kifejezések uniójának negáltja kell, nem a negált regexpek uniója!Vagyis left join on keresendo ~ regexp... where regexp is null.
bambano megoldását szabvány join szintaxisra átírva:
select keresendo
from keresendotabla
left join regexptabla
on keresendo ~ regexposzlop
where regexposzlop is null; -
-
nyunyu
félisten
válasz
#29736192
#4827
üzenetére
Dokumentációja szerint a Postgre SIMILAR TO/NOT SIMILAR TO/~/~* operátoroknak egy patternt lehet megadni.
Úgyhogy nem úszod meg tárolt eljárás nélkül:
Kurzorba teszed a pattern lista tartalmát.
Végigiterálsz a kurzoron, minden egyes lépésnél egy ideiglenes táblába leválogatod az eredeti táblából az aktuális patternre illeszkedő értékeket.
Végén meg egy jól irányzott left joinnal kiválogatod az eredeti táblából azokat az értékeket, amik a másodikban NEM szerepelnek. -
Micsurin
nagyúr
Köszönöm a sok segítséget az elmúlt hetekben, nagyon jól jött!
Első ZH-n anno megrántottak mert lehalt a vmware, na úgy néz ki nem ,hogy a bukás széléről kikapartam a tárgyat de 3-astól rosszabb nem igen lehetek már akkor se ha az elméleti ZH-t lenullázom.
-
Micsurin
nagyúr
...valamiért magától észhez tért nem tudom miért. Újraraktam a virtuális gépet most jó.
A sor szintű trigger az a
for each rowugye?
Ha tábla szintű triggert írtak még nekünk ott a költő mire gondolt? statement trigger-re? -
Micsurin
nagyúr
select *
from dba_tables
where table_name='MOTOROK'; és végig próbálgatva is ORA-00942 lesz az az: a tábla vagy a nézet nem létezik.Pedig nulláról kezdtem:
Új kapcsolat Hr-be belépve, létrehoz és feltölt.
Kapcsolódtam a SYS as SYSDBA-ra megadtam az ALL PRIVILEGES-t a Hr-nek.
Létrehoztam a usereket és a role-okat, de semmi változás a dba_tables-re sem lehet lekérdezni.
-
Micsurin
nagyúr
hr alól lettek létrehozva a táblák és ott is lett a GRANT kiadva mivel megkötés volt, hogy ne lehessen jogot tovább adni.
De nem akarja az igazságot annyira nem, hogy disconnect majd connect ismét hr-rel átraktam mindent ANY-re, hát nem igazán hatotta meg a dolog mert továbbra sem léteznek a tábláim.

edit.: ezt a DBA-t mindjárt megnézem csak nulláztam a vmwaret inkább berakok minden kódot újra mert kezdtem kuszálni már.
-
nyunyu
félisten
válasz
Micsurin
#4818
üzenetére
GRANTolni csak az tud, akié a tábla, vagy kapott rá GRANTolási jogot, vagy DBA júzer.
Akinek csak olvasási/írási joga van, az nem tudja azokat továbbadni!Ha hr séma/júzer alatt hoztad létre a táblákat, akkor hr júzerrel kell kiadni a GRANTokat.
Utána a többi júzer select * from hr.táblanév;-vel fogja elérni őket.
Egyébként a táblák listája nyilvános, bárki lekérheti a select * from dba_tables;-t.
Ha a select * from all_tables;-t kérdezed, ott csak azokat mutatja az Oracle, amikhez az aktuális júzernek joga is van. -
Micsurin
nagyúr
Köszönöm a válaszokat!
Még annyi kérdésem lenne(
), hogy ha adtam SESSION létrehozáshoz is jogos egy usernek, miért nem látja az adott séma tábláit?
Elméletileg pedig kéne lássa nem?
CREATE ROLE raktáros IDENTIFIED BY r123;CREATE ROLE eladó IDENTIFIED BY e123;CREATE ROLE üzletvezető IDENTIFIED BY ü123;CREATE USER Zolika IDENTIFIED BY z123;GRANT UNLIMITED TABLESPACE TO Zolika;CREATE USER Toma IDENTIFIED BY t123;GRANT UNLIMITED TABLESPACE TO Toma;CREATE USER Csilla IDENTIFIED BY c123;GRANT UNLIMITED TABLESPACE TO Csilla;GRANT CREATE SESSION TO Toma;GRANT CREATE SESSION TO Csilla;GRANT CREATE SESSION TO Zolika;GRANT SELECT, INSERT, UPDATE, DELETE ON kereskedes TO eladó;GRANT SELECT, INSERT, UPDATE, DELETE ON motorok TO eladó;GRANT SELECT, INSERT, UPDATE, DELETE ON kiegeszitok TO eladó;GRANT SELECT, INSERT, UPDATE, DELETE ON adasvetel TO eladó;GRANT ALL PRIVILEGES TO raktáros;GRANT SELECT ON kereskedes TO üzletvezető;GRANT SELECT ON adasvetel TO üzletvezető;GRANT SELECT ON motorok TO üzletvezető;GRANT SELECT ON kiegeszitok TO üzletvezető;GRANT SELECT ON maganszemely TO üzletvezető;GRANT raktáros TO Zolika;GRANT eladó TO Csilla;GRANT üzletvezető TO Toma; -
tm5
tag
válasz
Micsurin
#4812
üzenetére
Még annyit érdemes tudni a többiek által leírtakon túl, hogy van egy TRUNCATE TABLE parancs, ami ugyanúgy kitöröl mindent egy táblából mint a DELETE parancs, csak DDL utasításként viselkedik, tehát azonnal végrehajtódik és nem is lehet rollback-elni. A DELETE-et a tranzakción belül még igen. Cserébe villámgyors. A DELETE az sok rekordra nagyon lassú tud lenni.
-
Micsurin
nagyúr
Köszönöm!
Életmentő volt holnap lesz csak órai téma de így végre letudom adni a félévest teljesen befejezve és nem kell már vele szórakozzak a héten, legalább ezzel kevesebb!
Keresgéltem de stackover után sem esett le teljesen a dolog pedig tényleg egyszerű...
Érdekes mindig ezekkel az egyszerűbb cuccokkal szenvedek, a tárolj eljárásos, függvényes triggeres téma valahogy jobban feküdt de sanszos, hogy a prog miatt.
-
nyunyu
félisten
-
nyunyu
félisten
válasz
Micsurin
#4804
üzenetére
Egy tranzakcióban futó adatmanipulációs (DML) utasítások (insert, update, merge, delete...) hatását csak az őket futtató DB session látja, amíg a tranzakció nincs commitálva.
Mittudomén, van egy táblád, amiben van 10 rekord.
Nyitsz egy adatbáziskezelő ablakot, amiben kiadsz 5 insertet, meg 3 updateet, majd kiadsz egy select count(*) from tabla;-t, akkor az ott 15-öt fog mutatni.
Közben nyitsz egy másik ablakot, egy ott kiadott select * from tabla; az eredeti állapotot, 10 rekordot fog mutatni, a még nyitva lévő tranzakcióban hozzáadott ötöt, meg az updateek hatását nem!
Ha az első ablakban kiadsz egy commit;-ot (amivel véglegesíted az addig nyitott tranzakcióban futtatott DML utasítások hatását és lezárod a tranzakciót), akkor a második ablakbeli select *-ot újrafuttatva már 15, módosult rekord fog megjelenni.
Ha az első ablakban commit; helyett rollback;-et nyomsz, akkor teljesen eldobódik a nyitott tranzakcióban futtatott DMLek hatása, és visszaáll az eredeti állapotra.
Tehát ha utána kiadnál egy select *-ot, akkor ugyanazt a 10 eredeti rekordot látnád az első ablakban is, mint korábban a kettes ablakban.Adatdefiníciós (DDL) utasítások (pl. tábla létrehozás, eldobás, oszlop hozzáadás, index létrehozás...) mindig önálló tranzakcióban futnak és azonnal commitálódnak, így azok nem vonhatóak vissza kiadás után.
Meg ha jól rémlik, akkor az adott DB sessionben még függőben lévő tranzakciót is commitálják!Savepointokat még nem használtam, de ahogy olvasom arra jó, hogy rollbacknél meg lehessen mondani, hogy ne az egész addigi tranzakciót dobja el, hanem csak a savepoint után futtatott utasításokat.
Lehet, hogy valakik szerint ez jó ötlet, de alapvetően sérti a tranzakciók atomiságát, és jóval nehezebb egy félig lefutott tranzakció által elcseszett adatokat javítani, mint ha eldobnád az egészet a francba, és javítás után elölről újrafuttatnád az egészet.
-
Micsurin
nagyúr
Rollback, commit, savepointmiképp működik?Parancs alá írom vagy után mint egy új parancsot és együtt futtatom? Elolvastam a dokumentációt de most nem volt onnan világos a parancs működése.
Commitgyakorlatilag mindenki számára láthatóvá teszi a változást pl egyUPDATEesetén? -
disy68
aktív tag
válasz
Petya25
#4802
üzenetére
A sys.objects-ben megtalálsz minden user által létrehozott objektumot. A sys.system_objects-ben a system által létrehozott és a sys.all_objects-ben pedig mindekettőt.
Ahogy a leírásban is benne van a különböző objektumok nevét megkaphatod az OBJECT_NAME függvény segítségével.Szűrsz a neked szükséges típusokra és meg is vagy.
-
Petya25
őstag
MS SQL-ben kellene a táblákat és megírt nézet/függvény/SP-kel kilistáznom hogy a készítés dátuma is rajta legyen?
Valami tipp?Táblákra van egy ilyenem:
SELECT SCHEMA_NAME(schema_id) AS schema_name, name AS table_name, create_date
FROM sys.tables
ORDER BY schema_name, table_name -
Új hozzászólás Aktív témák
- Apple Watch
- Víz- gáz- és fűtésszerelés
- Milyen asztali (teljes vagy fél-) gépet vegyek?
- AliExpress tapasztalatok
- Tarr Kft. kábeltv, internet, telefon
- Telekom otthoni szolgáltatások (TV, internet, telefon)
- One mobilszolgáltatások
- One otthoni szolgáltatások (TV, internet, telefon)
- Ingatlanos topic!
- NVIDIA GeForce RTX 5080 / 5090 (GB203 / 202)
- További aktív témák...
- Gamer PC-Számítógép! Csere-Beszámítás! I5 10500T / RTX 3050 / 32GB DDR4 / 512 SSD!
- Telefon felvásárlás!! Honor Magic6 Lite, Honor Magic6 Pro, Honor Magic7 Lite, Honor Magic7 Pro
- ÁRGARANCIA!Épített KomPhone Ryzen 5 7600X 32/64GB RAM RX 9070 16GB GAMER PC termékbeszámítással
- Doxa férfi óra - 166.90.101.20 - D-Sport férfi karóra
- HIBÁTLAN iPhone 13 Pro Max 128GB Gold-1 ÉV GARANCIA - Kártyafüggetlen, MS4162, 100% Akksi
Állásajánlatok
Cég: BroadBit Hungary Kft.
Város: Budakeszi
Cég: Laptopszaki Kft.
Város: Budapest





