O Cascade só vai funcionar se você fez essa relação dos campos.
Mas, funciona sim, eu trabalho com postgres aqui na empresa.
Não está funcionando pq vc criou a tabela de modo errado.
[code]view plaincopy to clipboardprint?
CREATE TABLE endereco
(
cod_endereco not null primary key,
endereco text
CONSTRAINT cod_endereco_pkey PRIMARY KEY (cod_endereco)
)
WITH (
OIDS=FALSE
);
ALTER TABLE endereco
OWNER TO postgres; [/code]
[code]
view plaincopy to clipboardprint?
CREATE TABLE motorista
(
cod_motorista not null primary key,
nome_motorista text,
cod_endereco integer
CONSTRAINT fk_cod_endereco FOREIGN KEY (cod_endereco)
REFERENCES endereco (cod_endereco) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE CASCADE
)
WITH (
OIDS=FALSE
);
ALTER TABLE motorista
OWNER TO postgres; [/code]
Criei um cascade onde se o endereco for deletado, tambem sera deletado na tabela motorista
[quote=charleston10]O Cascade só vai funcionar se você fez essa relação dos campos.
Mas, funciona sim, eu trabalho com postgres aqui na empresa.
Não está funcionando pq vc criou a tabela de modo errado.
[code]view plaincopy to clipboardprint?
CREATE TABLE endereco
(
cod_endereco not null primary key,
endereco text
CONSTRAINT cod_endereco_pkey PRIMARY KEY (cod_endereco)
)
WITH (
OIDS=FALSE
);
ALTER TABLE endereco
OWNER TO postgres; [/code]
[code]
view plaincopy to clipboardprint?
CREATE TABLE motorista
(
cod_motorista not null primary key,
nome_motorista text,
cod_endereco integer
CONSTRAINT fk_cod_endereco FOREIGN KEY (cod_endereco)
REFERENCES endereco (cod_endereco) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE CASCADE
)
WITH (
OIDS=FALSE
);
ALTER TABLE motorista
OWNER TO postgres; [/code]
Criei um cascade onde se o endereco for deletado, tambem sera deletado na tabela motorista
se o endereço for deletado tudo será deletado sim, mas o que eu quero é que quando o motorista for deletado o endereço também suma. Seria ao contrario do que está acontecendo, porque não tem nenhum valor que eu possa pegar como base pra buscar o motorista, entao eu estou usando:
Esclarece uma dúvida, então cada endereço está relacionado a um motorista, ou seja, cada motorista tem somente um endereço?
Se assim for, se o motorista não existir, aquele endereço não existe…
[quote=charleston10]Esclarece uma dúvida, então cada endereço está relacionado a um motorista, ou seja, cada motorista tem somente um endereço?
Se assim for, se o motorista não existir, aquele endereço não existe…
seria isso mesmo?[/quote]
sim, isso mesmo.
Se o endereço não existir o motorista que está ligado a aquele também não existe e vice-versa.
Oxi, então cria um campo de identificação do motorista na tabela endereço e relaciona como chave estrangeira esse campo…
então vc usa cascade na refenrecia
[quote=charleston10]Oxi, então cria um campo de identificação do motorista na tabela endereço e relaciona como chave estrangeira esse campo…
então vc usa cascade na refenrecia
;]
[/quote]
olá, entendi mais ou menos o que voce falou, mas como seria isso falandoo em termos de codigo? como seria essa consulta?
Lembrando que busco o campo usando o nome_motorista.
Vc nao pode fazer isso, pq qual campo que identifica o motorista, o codigo dele ou o nome dele?
Se for o nome, entao vc tem que concordar que pode ter nomes iguais, e ai vai da erro… pq nomes iguais com endereços diferentes…
Em termos de código, vc adiciona um campo na tabela endereço com o nome codigo_motorista
pra vc fazer essa relaçao…
Vc nao pode fazer isso, pq qual campo que identifica o motorista, o codigo dele ou o nome dele?
Se for o nome, entao vc tem que concordar que pode ter nomes iguais, e ai vai da erro… pq nomes iguais com endereços diferentes…
Em termos de código, vc adiciona um campo na tabela endereço com o nome codigo_motorista
pra vc fazer essa relaçao…
não se preocupe com os dados, ja to pensando em outra forma de buscar, mas o meu problema é justamente isso, seria tipo uma consulta e um delete no mesmo tempo.
porque preciso que seja um select e um delete junto, e sendo assim se fosse fazer com essa referência que você falou teria que pensar ja na parte de programação pra pegar o valor do cod motorista e adicionar na tabela endereco e queria que só fosse em sql por ser mais simples…
ficaria algo assim: select * from motorista m inner join endereco e on (m.cod_motorista=e.cod_motorista) where m.cod_motorista=?
[code]//mostra todos os dados do motorista juntamente com o endereço
SELECT * FROM motorista m
INNER JOIN endereco e
ON e.codigo_endereco = m.codigo_endereco
WHERE m.codigo_motorista = 1
//automaticamente o endereço sera deletado
DELETE FROM motorista WHERE codigo_motorista = 1 [/code]
Quando voce trabalha com relacionamento de tabelas, os SQLs são simples, é que parecem ser complicados, mas só vc entender… é fácil
é q vc nao viu consultas de 900 linhas… hahhah
[quote=charleston10][code]//mostra todos os dados do motorista juntamente com o endereço
SELECT * FROM motorista m
INNER JOIN endereco e
ON e.codigo_endereco = m.codigo_endereco
WHERE m.codigo_motorista = 1
//automaticamente o endereço sera deletado
DELETE FROM motorista WHERE codigo_motorista = 1 [/code]
Quando voce trabalha com relacionamento de tabelas, os SQLs são simples, é que parecem ser complicados, mas só vc entender… é fácil
é q vc nao viu consultas de 900 linhas… hahhah[/quote]
olá, resolvi o problema apesar de ter usado uma solução diferente.