Procedure para eliminar y borrar un tabla

05/07/2004 - 18:49 por iker | Informe spam
Buenas otra vez,

Estoy tratando de crear un procedimiento almacenado que me elimine un a
tabla y me la cree. Supongo que es la solucion a que se me llene una tabla
(Si le pongo un indice y ejecuto un insert de 1000 registros acabara por
llenarse, y a mi me interesa que el indice empiece desde el 1 al ejecutar el
insert) el caso es que no me deja, me da todo tipo de errores: que si la
tabla ya existe, que si el procedimiento ya existe... lo mismo no se puede
hacer de esta forma...
CREATE PROCEDURE [dbo].[CreaTemp]
AS
if exists (select * from dbo.sysobjects where id object_id(N'[dbo].[tTemporal]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[tTemporal]
GO

CREATE TABLE [dbo].[tTemporal] (
[id] [tinyint] IDENTITY (1, 1) NOT NULL ,
[fec1] [datetime] NOT NULL ,
[fec2] [datetime] NOT NULL ,
[num] [int] NULL
) ON [PRIMARY]
GO

veis algo que este mal? alguna solucion?

Lo que trato de hacer es borrar la tabla y crearla de nuevo pa que el indice
empiece desde 0 y luego hacer un insert de muchos registros a esta
tabla(tTemporal) para mostrarlos.

Gracias de antemano otra vez.

iKER-

Preguntas similare

Leer las respuestas

#1 Gustavo Larriera [MVP SQL]
05/07/2004 - 18:55 | Informe spam
No entendí muy bien tu problema, pero quisiera sugerirte:

- Si lo que deseas es reconstruir indices, utiliza el comando DBCC DBREINDEX
- Si lo que deseas es reinicializar valores IDENTITY, utiliza: DBCC
CHECKIDENT

Gustavo Larriera
Uruguay LatAm
http://sqljunkies.com/weblog/gux/
Este mensaje se proporciona "COMO ESTA" sin garantias y no otorga ningun
derecho / This posting is provided "AS IS" with no warranties, and confers
no rights.
"iker" wrote in message
news:e7qvk$
Buenas otra vez,

Estoy tratando de crear un procedimiento almacenado que me elimine un a
tabla y me la cree. Supongo que es la solucion a que se me llene una tabla
(Si le pongo un indice y ejecuto un insert de 1000 registros acabara por
llenarse, y a mi me interesa que el indice empiece desde el 1 al ejecutar


el
insert) el caso es que no me deja, me da todo tipo de errores: que si la
tabla ya existe, que si el procedimiento ya existe... lo mismo no se puede
hacer de esta forma...
CREATE PROCEDURE [dbo].[CreaTemp]
AS
if exists (select * from dbo.sysobjects where id > object_id(N'[dbo].[tTemporal]') and OBJECTPROPERTY(id, N'IsUserTable') 1)
drop table [dbo].[tTemporal]
GO

CREATE TABLE [dbo].[tTemporal] (
[id] [tinyint] IDENTITY (1, 1) NOT NULL ,
[fec1] [datetime] NOT NULL ,
[fec2] [datetime] NOT NULL ,
[num] [int] NULL
) ON [PRIMARY]
GO

veis algo que este mal? alguna solucion?

Lo que trato de hacer es borrar la tabla y crearla de nuevo pa que el


indice
empiece desde 0 y luego hacer un insert de muchos registros a esta
tabla(tTemporal) para mostrarlos.

Gracias de antemano otra vez.

iKER-


Respuesta Responder a este mensaje
#2 Isaías
05/07/2004 - 21:08 | Informe spam
Amigo Iker

Si su tabla ya existe, no necesita BORRARLA (DROP) par re-
iniciar el IDENTITY, cheque esto:

TRUNCATE TABLE tTemporal
DBCC CHECKIDENT (tTemporal, RESEED, 1)
Respuesta Responder a este mensaje
#3 MAXI
06/07/2004 - 00:09 | Informe spam
Hola, yo le recomendaria NO usar Identitys!! porque los quieres usar?




Maxi

Buenos Aires - Argentina

Desarrollador .NET 3 Estrellas

Mail: Maxi_accotto[arroba]speedy.com.ar

MSN:


"iker" escribió en el mensaje
news:e7qvk$
Buenas otra vez,

Estoy tratando de crear un procedimiento almacenado que me elimine un a
tabla y me la cree. Supongo que es la solucion a que se me llene una tabla
(Si le pongo un indice y ejecuto un insert de 1000 registros acabara por
llenarse, y a mi me interesa que el indice empiece desde el 1 al ejecutar


el
insert) el caso es que no me deja, me da todo tipo de errores: que si la
tabla ya existe, que si el procedimiento ya existe... lo mismo no se puede
hacer de esta forma...
CREATE PROCEDURE [dbo].[CreaTemp]
AS
if exists (select * from dbo.sysobjects where id > object_id(N'[dbo].[tTemporal]') and OBJECTPROPERTY(id, N'IsUserTable') 1)
drop table [dbo].[tTemporal]
GO

CREATE TABLE [dbo].[tTemporal] (
[id] [tinyint] IDENTITY (1, 1) NOT NULL ,
[fec1] [datetime] NOT NULL ,
[fec2] [datetime] NOT NULL ,
[num] [int] NULL
) ON [PRIMARY]
GO

veis algo que este mal? alguna solucion?

Lo que trato de hacer es borrar la tabla y crearla de nuevo pa que el


indice
empiece desde 0 y luego hacer un insert de muchos registros a esta
tabla(tTemporal) para mostrarlos.

Gracias de antemano otra vez.

iKER-


Respuesta Responder a este mensaje
#4 SqlRanger [MVP .NET]
06/07/2004 - 10:00 | Informe spam
Yo recomendaría lo contrario ¿Por qué no usarlos?

Saludos:

Jesús López
MVP .net
Respuesta Responder a este mensaje
#5 iker
06/07/2004 - 14:57 | Informe spam
jajajaja menudo lio
K hago?

El asunto es que esa tabla sera temporal, rellenare esa tabla usare los
datos y mas tarde se volver a llenar, por eso quiero que empiecen desde 0, o
borrarlo y crearlo de nuevo... para que despues de unos cuantos insert no de
error diciendo que el id es mayor de la variable (un valor 100000 para un
byte vamos)

iKER-

"SqlRanger [MVP .NET]" escribió en el mensaje
news:
Yo recomendaría lo contrario ¿Por qué no usarlos?

Saludos:

Jesús López
MVP .net


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida