Boa noite.
Tenho um bd com 2 tabelas. A primeira (serv_os) tem as colunas id, fk_os e fk_servico a segunda (prod_os) tem as colunas id, fk_os e agora eu criei a coluna fk_serv. A coluna fk_serv vai ser preenchida com o valor id da primeira coluna. Fiz o seguinte update entre as tabelas:
UPDATE prod_os
JOIN serv_os ON serv_os.fk_os= prod_os.fk_os
SET prod_os.fk_serv = serv_os.id
WHERE prod_os.fk_os=serv_os.fk_os;
Até aqui tudo bem, porém, fiquei com o seguinte problema. Muitas vezes existem vários serviços na primeira tabela, por exemplo id=100 produto A, id=101 produto B, porém o fk_os é o mesmo . Ai na coluna fk_serv aparece sempre o id do produto A. Nesse caso duas vezes. O produto B, C,...etc não aparece.
Não consegui nenhum comando, já que o join é pela coluna fk_os, que fizesse o update mudar o ponteiro para o serviço B,C,etc.
Se alguém puder me ajudar eu agradeço.
Ola. Tenho uma tabela no 3 campos que sao "LIVRO, POS, PAGINA" ao qual a logica e a seguinte: cada livro tem 100 paginas cada pagina tem 30 posiçoes tenho 8,364 registros pra inserir chegando a 100 paginas com 30 posiçoes cada passa para o livro 2 e como fazer o update na tabela inserindo nos campos LIVRO = 1, POS de 0 a 30 e PAGINA 1 para cada 30 registros logos apos pagina 2 ?
estou tentando fazer assim:
<?php
> ini_set('max_execution_time', 2000); $pdo = new
> DO(DB_SERVER.":host=".DB_HOST.";dbname=".DB_BASE,DB_USER,DB_PASSWORD);
> $sql = $pdo->prepare("SELECT count(*) FROM tabela2018");
> $sql->execute();
> $livro = 1;
> foreach($sql as $obj){
> $variavel = $obj[0];
> ceil((float)$variavel/100);
> $qtdlaco = ceil((float)$variavel/100);
> for ($id = 1; $id <= 35; $id++) {
> for($L=1; $L < $qtdlaco; $L++) {
> for ($P = 0; $P <= 30; $P++) {
> $sql = $pdo->prepare("UPDATE tabela2018 SET LIVRO = :LIVRO, POS = :POS, PAGINA = :PAGINA WHERE idtabela2018 = $id");
> $sql->bindValue(':LIVRO', $livro);
> $sql->bindValue(':POS', $P);
> $sql->bindValue(':PAGINA', $L);
> $sql->execute();
> }
> }
> }
>}
?>
mas na tebela so aparece:
LIVRO POS PAGINA
1 30 83
1 30 83
1 30 83
e nao como deveria :
LIVRO POS PAGINA
1 0 1
1 1 1
1 2 1
Preciso fazer uma inserção no DB de registros referente a pagamentos, quando for no crédito será realizado o insert com sua respectiva data de compensação e valor da parcela exemplo:
3 parcelas de 100.00 e cada registro em seu devido mês:
INSERT INTO tabela (valor, data) VALUES (100, 2022-08-17),(100, 2022-09-17),(100, 2022-10-17)
É mais eficiente fazer da forma acima ou colocar 3 INSERT?
Ou existe forma melhor de fazer isso?
sou novo no Oracle, antes trabalhava com SQL SERVER, e me deparei com algo que ja estou a horas tentando solucionar mas nao consegui.
Nessa Trigger que vou postar, quando mando compilar ela, fala que esta faltando uma virgula, apos o values, mas nao precisa dela e nao acho onde pode ser essa virgula faltante.
CREATE OR REPLACE TRIGGER JOBS_CL_INSERE_USUARIO
AFTER
INSERT OR
UPDATE OF EXPORTADA_AVA
ON SITE_USUARIOS
REFERENCING NEW AS NEW
BEGIN
INSERT INTO BLACKBEAN.TBL_USERS
VALUES
(NULL,
'INSERT',
NULL,
'db',
'0',
'0',
'0',
TO_CHAR(:NEW.CPF),
MD5(:NEW.CPF||'port@l'),
TO_CHAR(:NEW.CPF),
SUBSTRING(:NEW.NOME, 1, INSTR(:NEW.NOME, ' ')-1),
SUBSTRING(:NEW.NOME, INSTR(:NEW.NOME, ' ')+1, LEN(:NEW.NOME)),
'email@email.com',
NULL,
NULL,
DATE_TO_UNIX_TS(SYSDATE),
NULL,
NULL);
END;
/
Se alguem puder me ajudar agradeceria.
tenho um campo status. Então, a ideia é mudar o status. Consigo alterar o status quando necessário. Daí, pensei em todas vez que alterar, salvar o id do usuário, data, hora, o último status alterado...
consigo fazer isso com INSERT, depois do UPDATE.
Nao uso trigger. Até tentei fazer, mas não saiu como eu queria.
Então, para os maiores entendedores do assunto, a melhor prática seria a TRIGGER ou INSERT ? Melhor prática ou o que mais funciona na prática ?