Usuário com melhor resposta
Usando o @last_insert_id em tabela sem identity ou auto_incremento

Pergunta
-
Olá boa tarde.
Eu estou fazendo um projeto pessoa só para treinar e adquiri conhecimento em C#.
estou fazendo um software com conexão com banco de dados, eu uso o próprio banco de dados que o VS 2017 fornece.
Eu tenho duas tabela uma CLIENTE(CELULAR, FIXO, NOME) CELULAR=PK e a outra tabela é
ENDERECO(RUA, NUM, COMPL, BAIRRO, CEP, CIDADE, UF, CELULAR) ID_ENDER=PK e CELULAR = FK
Eu vou fazer usando o @last_insert_into. Minha dúvida é a seguinte a minha chave primaria é o Celular que será digitado pelo usuário e eu to na dúvida se posso usa-lá mesmo ela não sendo um auto-incremento e se do modo que eu fiz está certo
esse é o exemplo que eu vi na internet
string strConn = @"INSERT INTO ETAPA_GRUPO_ENSINO (NOME_GRUPO_ENSINO) VALUES (@NOME_GRUPO_ENSINO);
DECLARE @LAST_ID AS INT
SET @LAST_ID = SCOPE_IDENTIY()
INSERT INTO ETAPA_NIVEL_GRUPO_ITENS (ID_ETAPA_NIVEL_ENSINO,ID_ETAPA_GRUPO_ENSINO) VALUES (@LAST_ID,@ID_ETAPA_NIVEL_ENSINO);";
E esse é o que vou usar, já com as adaptações
String sqlQuery = @”INSERT INTO cliente(celular, fixo, nome) VALUES( @celular,@fixo, @nome);
DECLARE@Ccelular as int
SET @celular = @celular
INSERT INTO endereco(rua, num, compl, bairro, cidade, uf, celular) VALUES(@celular, @rua, @num,@compl,@bairro,cidade, @uf);”;
Respostas
-
Olá. Estou passando abaixo um exemplo que utilizo.
criacao da tabela - utilize um banco de exemplo
CREATE TABLE [dbo].[TB_USUARIO](
[COD_USUARIO] [smallint] IDENTITY(1,1) NOT NULL,
[DSC_NOME_USUARIO] [varchar](30) NULL,
CONSTRAINT [TB_USUARIO_PK] PRIMARY KEY CLUSTERED
(
[COD_USUARIO] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
--- sql para voce pegar o identity
DECLARE @COD_USUARIO INT, @DSC_NOME_USUARIO VARCHAR(100)
SET @DSC_NOME_USUARIO = 'ASSAS'
SET @COD_USUARIO = 0;
IF NOT EXISTS (SELECT 1 FROM dbo.TB_USUARIO WITH(NOLOCK) WHERE DSC_NOME_USUARIO = @DSC_NOME_USUARIO)
BEGIN
set @COD_USUARIO = 0;
INSERT INTO dbo.TB_USUARIO ( DSC_NOME_USUARIO)
VALUES (@DSC_NOME_USUARIO)
set @COD_USUARIO = (select @@IDENTITY);
END
SELECT @COD_USUARIOespero que te ajude.
- Marcado como Resposta AfonsoVieira segunda-feira, 5 de novembro de 2018 23:44
Todas as Respostas
-
Olá. Estou passando abaixo um exemplo que utilizo.
criacao da tabela - utilize um banco de exemplo
CREATE TABLE [dbo].[TB_USUARIO](
[COD_USUARIO] [smallint] IDENTITY(1,1) NOT NULL,
[DSC_NOME_USUARIO] [varchar](30) NULL,
CONSTRAINT [TB_USUARIO_PK] PRIMARY KEY CLUSTERED
(
[COD_USUARIO] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
--- sql para voce pegar o identity
DECLARE @COD_USUARIO INT, @DSC_NOME_USUARIO VARCHAR(100)
SET @DSC_NOME_USUARIO = 'ASSAS'
SET @COD_USUARIO = 0;
IF NOT EXISTS (SELECT 1 FROM dbo.TB_USUARIO WITH(NOLOCK) WHERE DSC_NOME_USUARIO = @DSC_NOME_USUARIO)
BEGIN
set @COD_USUARIO = 0;
INSERT INTO dbo.TB_USUARIO ( DSC_NOME_USUARIO)
VALUES (@DSC_NOME_USUARIO)
set @COD_USUARIO = (select @@IDENTITY);
END
SELECT @COD_USUARIOespero que te ajude.
- Marcado como Resposta AfonsoVieira segunda-feira, 5 de novembro de 2018 23:44
-