Verificar existencia de tabla

10/08/2005 - 13:30 por Mennegguzzi | Informe spam
Hola a todos, una consulta,

para borrar una Vista hago lo siguiente:

IF EXISTS (SELECT TABLE_NAME FROM INFORMATION_SCHEMA.VIEWS
WHERE TABLE_NAME = 'Mi_Vista')
DROP VIEW Mi_Vista
GO

O sea, primero me fijo si existe, y si existe la borro.


Con una tabla no funciona. Cómo puedo hacer lo mismo pero con una tabla ?

Desde ya muchas gracias

Saludos

Pablo

Preguntas similare

Leer las respuestas

#1 Maxi
10/08/2005 - 13:33 | Informe spam
Hola, podes hacer lo mismo, pero a mi me gusta mucho mas hacer

If Object_id('nombretabla') is not null
drop table nombretabla
Go

Create table


Salu2
Maxi


"Mennegguzzi" escribió en el mensaje
news:
Hola a todos, una consulta,

para borrar una Vista hago lo siguiente:

IF EXISTS (SELECT TABLE_NAME FROM INFORMATION_SCHEMA.VIEWS
WHERE TABLE_NAME = 'Mi_Vista')
DROP VIEW Mi_Vista
GO

O sea, primero me fijo si existe, y si existe la borro.


Con una tabla no funciona. Cómo puedo hacer lo mismo pero con una tabla ?

Desde ya muchas gracias

Saludos

Pablo

Respuesta Responder a este mensaje
#2 Mennegguzzi
10/08/2005 - 13:54 | Informe spam
Muchas gracias Maxi,
lo voy a hacer así

saludos

Pablo

"Maxi" escribió en el mensaje
news:
Hola, podes hacer lo mismo, pero a mi me gusta mucho mas hacer

If Object_id('nombretabla') is not null
drop table nombretabla
Go

Create table


Salu2
Maxi


"Mennegguzzi" escribió en el mensaje
news:
Hola a todos, una consulta,

para borrar una Vista hago lo siguiente:

IF EXISTS (SELECT TABLE_NAME FROM INFORMATION_SCHEMA.VIEWS
WHERE TABLE_NAME = 'Mi_Vista')
DROP VIEW Mi_Vista
GO

O sea, primero me fijo si existe, y si existe la borro.


Con una tabla no funciona. Cómo puedo hacer lo mismo pero con una tabla ?

Desde ya muchas gracias

Saludos

Pablo





Respuesta Responder a este mensaje
#3 Alejandro Mesa
10/08/2005 - 14:36 | Informe spam
Mennegguzzi,

Si usas la funcion "object_id", entonces te recomiendo que qualifiques el
nombre de la tabla con el nombre del dueño, de lo contrario podrias realizar
una operacion sobre la tabla equivocada, principalmente cuando el usuario es
miembro del grupo db_owner o sysadmin.


Ejemplo:

Debe haber una cuenta "test" para correr este script. Corre el script con
una cuenta que pertenezca al grupo db_owner o sysadmin.

create table test.t1 (
c1 int
)
go

create table dbo.t1 (
c1 int
)
go

select object_id('dbo.t1'), object_id('test.t1'), object_id('t1')
go

drop table dbo.t1, test.t1
go


AMB

"Mennegguzzi" wrote:

Muchas gracias Maxi,
lo voy a hacer así

saludos

Pablo

"Maxi" escribió en el mensaje
news:
> Hola, podes hacer lo mismo, pero a mi me gusta mucho mas hacer
>
> If Object_id('nombretabla') is not null
> drop table nombretabla
> Go
>
> Create table
>
>
> Salu2
> Maxi
>
>
> "Mennegguzzi" escribió en el mensaje
> news:
>> Hola a todos, una consulta,
>>
>> para borrar una Vista hago lo siguiente:
>>
>> IF EXISTS (SELECT TABLE_NAME FROM INFORMATION_SCHEMA.VIEWS
>> WHERE TABLE_NAME = 'Mi_Vista')
>> DROP VIEW Mi_Vista
>> GO
>>
>> O sea, primero me fijo si existe, y si existe la borro.
>>
>>
>> Con una tabla no funciona. Cómo puedo hacer lo mismo pero con una tabla ?
>>
>> Desde ya muchas gracias
>>
>> Saludos
>>
>> Pablo
>>
>
>



Respuesta Responder a este mensaje
#4 Alejandro Mesa
10/08/2005 - 14:48 | Informe spam
Mennegguzzi,

Me olvide decir que si usas las vistas de information_schema, entonces debes
adicionar a la clausula "where" la columna table_schema para evitar el mismo
problema.

create view dbo.v1
as
select orderid, customerid, orderdate
from dbo.orders
go

create view test.v1
as
select orderid, customerid, orderdate
from dbo.orders
go

if exists(
select
*
from
information_schema.[views]
where
table_schema = 'test'
and table_name = 'v1'
)
drop view test.v1
go

select
*
from
dbo.v1
go

drop view dbo.v1
go


AMB

"Alejandro Mesa" wrote:

Mennegguzzi,

Si usas la funcion "object_id", entonces te recomiendo que qualifiques el
nombre de la tabla con el nombre del dueño, de lo contrario podrias realizar
una operacion sobre la tabla equivocada, principalmente cuando el usuario es
miembro del grupo db_owner o sysadmin.


Ejemplo:

Debe haber una cuenta "test" para correr este script. Corre el script con
una cuenta que pertenezca al grupo db_owner o sysadmin.

create table test.t1 (
c1 int
)
go

create table dbo.t1 (
c1 int
)
go

select object_id('dbo.t1'), object_id('test.t1'), object_id('t1')
go

drop table dbo.t1, test.t1
go


AMB

"Mennegguzzi" wrote:

> Muchas gracias Maxi,
> lo voy a hacer así
>
> saludos
>
> Pablo
>
> "Maxi" escribió en el mensaje
> news:
> > Hola, podes hacer lo mismo, pero a mi me gusta mucho mas hacer
> >
> > If Object_id('nombretabla') is not null
> > drop table nombretabla
> > Go
> >
> > Create table
> >
> >
> > Salu2
> > Maxi
> >
> >
> > "Mennegguzzi" escribió en el mensaje
> > news:
> >> Hola a todos, una consulta,
> >>
> >> para borrar una Vista hago lo siguiente:
> >>
> >> IF EXISTS (SELECT TABLE_NAME FROM INFORMATION_SCHEMA.VIEWS
> >> WHERE TABLE_NAME = 'Mi_Vista')
> >> DROP VIEW Mi_Vista
> >> GO
> >>
> >> O sea, primero me fijo si existe, y si existe la borro.
> >>
> >>
> >> Con una tabla no funciona. Cómo puedo hacer lo mismo pero con una tabla ?
> >>
> >> Desde ya muchas gracias
> >>
> >> Saludos
> >>
> >> Pablo
> >>
> >
> >
>
>
>
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida