Size: a a a

2021 February 17

А

Андрій in sql_ninja
так а на каком моменте ломается, на Insert 3 получается??
источник

А

Андрій in sql_ninja
а если юзать обычную конструкцию drop table if exists #t?
источник

А

Андрій in sql_ninja
один х, проверил
источник

ДС

Дмитрий Степанов... in sql_ninja
@WizarD51 @mchist Есть ещё ньюанс
```
In SQL Server, local temporary tables are visible only in the current session. So if you create a local temporary table in one session, you cannot access it in other sessions. If a local temporary table created in a stored procedure, it is dropped automatically when the stored procedure is finished.
```
источник

ДС

Дмитрий Степанов... in sql_ninja
источник

ДС

Дмитрий Степанов... in sql_ninja
Хотя ногу отстрелить себе не получится, в скуле присутствуют области видимости временных таблиц.

begin transaction
go

create procedure t1
as
begin
 create table #tab (i int)
 insert into #tab values (1)
 select i as proc_t1 from #tab
end
go

create procedure t2
as
begin
 create table #tab (i int)
 insert into #tab values (2)
 select i proc_t2 from #tab
end
go

create table #tab (i int)
insert into #tab values (0)
select i as i0 from #tab
go

exec t1

select i as i1 from #tab

exec t2

select i as i3 from #tab

rollback transaction
go
источник

ДС

Дмитрий Степанов... in sql_ninja
источник

MC

Max Chistyakov in sql_ninja
Дмитрий Степанов
@WizarD51 @mchist Есть ещё ньюанс
```
In SQL Server, local temporary tables are visible only in the current session. So if you create a local temporary table in one session, you cannot access it in other sessions. If a local temporary table created in a stored procedure, it is dropped automatically when the stored procedure is finished.
```
If a local temporary table created in a stored procedure, it is dropped automatically when the stored procedure is finished
Это то мы в курсе;
мы проверяли, как поведёт себя СУБД при выполнении  процедуры, которая в коде создаёт временную таблицу. При условии, что на уровне, из которого процедура была вызвана, уже существует временная таблица с таким же именем.
источник

G

Gopneg in sql_ninja
Дмитрий Степанов
Хотя ногу отстрелить себе не получится, в скуле присутствуют области видимости временных таблиц.

begin transaction
go

create procedure t1
as
begin
 create table #tab (i int)
 insert into #tab values (1)
 select i as proc_t1 from #tab
end
go

create procedure t2
as
begin
 create table #tab (i int)
 insert into #tab values (2)
 select i proc_t2 from #tab
end
go

create table #tab (i int)
insert into #tab values (0)
select i as i0 from #tab
go

exec t1

select i as i1 from #tab

exec t2

select i as i3 from #tab

rollback transaction
go
тока нихера это не область видимости
это какой-то ебучий костыль, так как дропнуть чужую таблицу можно внутри
источник

G

Gopneg in sql_ninja
вообще область видимости не позволяет видеть на уровне выше то, что создано ниже
и не дает создать на уровне ниже то, что было создано выше
а тут какая-то ебала на ебале, первый раз чесгря с таким столкнулся
источник

ДС

Дмитрий Степанов... in sql_ninja
Gopneg
тока нихера это не область видимости
это какой-то ебучий костыль, так как дропнуть чужую таблицу можно внутри
Костыль, не костыль, но поле для творчества есть. Если ты свою не сделал, то пользуешься родительской.
источник

G

Gopneg in sql_ninja
наверное очередной костыль с субейза
источник

G

Gopneg in sql_ninja
я кстати не нашел в доке описания этого поведения, про скоупы при создании и поведение дроп
источник

G

Gopneg in sql_ninja
если кто знает где читать, киньте
источник

ДС

Дмитрий Степанов... in sql_ninja
Gopneg
наверное очередной костыль с субейза
с оракла
источник

G

Gopneg in sql_ninja
а оракл-то тут каким боком?
источник

ДС

Дмитрий Степанов... in sql_ninja
Gopneg
я кстати не нашел в доке описания этого поведения, про скоупы при создании и поведение дроп
Я вот тоже не увидел, по этому думал, что они на сессию.

https://www.sqlshack.com/when-to-use-temporary-tables-vs-table-variables/
источник

G

Gopneg in sql_ninja
тут нету про скоупы в процедурах, но тоже полезно, про сессии порождающие сессии
источник

ДС

Дмитрий Степанов... in sql_ninja
Gopneg
тут нету про скоупы в процедурах, но тоже полезно, про сессии порождающие сессии
источник

G

Gopneg in sql_ninja
However, if a query references a temporary table and two temporary tables with the same name exist at that time, it is not defined which table the query is resolved against.
источник