O que é o Sqlfiddle e por que devo me importar?

Estou confuso quando as pessoas perguntam se eu posso colocar um sqlfiddle juntos.

O que significa e como é a minha pergunta normal apenas descrevendo uma tabela em prosa não adequada? Quer dizer, o que eu não estou fornecendo? Tudo parece claro para mim!

SQL Fiddle é um playground de código fonte online como outros para várias plataformas de programação (como o JSFiddle). O ambiente do database de destino pode ser selecionado ou próximo a ele.

Ao remover as suposições / retrocessos nos comentários / desinteresse dos colegas, isso facilita a comunicação mais clara do seu problema. Elimina muitas das incertezas do seu esquema, enquanto também permite carregar dados de teste. Esperançosamente, dados de teste “edge-condition” suficientes são carregados pelo op para eliminar esse aspecto do problema. O supracitado é carregado no painel da janela à esquerda com instruções create table seguidas de inserções.

Além disso, uma consulta proposta pode ser fornecida no painel da janela do lado direito. Muitas vezes isso nem é desejado ou ignorado pelo par de resolução de problemas. Se fornecido, os resultados da execução dessa consulta são mostrados no painel da janela inferior.

No final, um link de URL para o violino deve ser fornecido no post para agilizar uma solução. As alterações em uma configuração proposta são versionadas e refletidas em URLs ligeiramente variados.

Abaixo está um aleatoriamente selecionado que acabei de encontrar na pilha:

insira a descrição da imagem aqui

Observe o painel da janela à esquerda do esquema com carga de dados, o direito da consulta e os resultados na parte inferior.

A maioria de nós faria cartwheels se você preenchesse apenas a janela da esquerda e compartilhasse a URL.

Observe no seguinte SQLFiddle que o teste para a cascata de exclusão ocorre no painel de esquema. E que os resultados são visíveis após a cascata de exclusão através da SELECT no painel direito. O DELETE não é permitido no lado da consulta nessa configuração, pois é considerado uma ação de DDL para seus propósitos.

Não há nada que impeça você de fornecer várias tabelas com dados à esquerda. Adicione informações relevantes ao seu esquema, como restrições e índices de Chave Estrangeira. Tente mantê-lo o mais real possível. Não seja barato com carga de dados inútil, mas não adicione uma tonelada. O equilíbrio certo para o teste deve ser fornecido.

Por que isso é importante?

  • Seus colegas estão mais propensos a responder sua pergunta
  • O nível de frustração é bastante reduzido
  • Os problemas são resolvidos mais rapidamente
  • Seus solucionadores de problemas não devem ter que gastar 10 minutos ou mais configurando os casos de teste que você pode fornecer prontamente. Ou gaste 30 minutos pedindo por isso.

entre outras coisas. Obrigado por ouvir.

Seção 2

O SQLFiddle é notório por estar inativo ou inacessível por cerca de 1/10 do tempo ou pior. Um fallback ou além disso é apenas para mostrar seu esquema e um dataload via texto:

Esquema

 create table parent ( -- assume your have only one parent, ok bad example, it's early id int auto_increment primary key, fullName varchar(100) not null )ENGINE=InnoDB; -- drop table child; create table child ( id int auto_increment primary key, fullName varchar(100) not null, myParent int not null, CONSTRAINT `mommy_daddy` FOREIGN KEY (myParent) REFERENCES parent(id) ON DELETE CASCADE ON UPDATE CASCADE )ENGINE=InnoDB; 

Carga de dados

Assim, podemos atingir os resultados desejados, precisamos de dados. Portanto, ofereça algumas, talvez de 5 a 8 linhas por tabela. Especialmente úteis são as linhas de dados que podem enganar ou testar o que chamamos de Condições de Borda. O abaixo não é nada disso, apenas mostrando como carregar algumas linhas para aqueles que não têm idéia do que significa carga de dados.

 insert parent(fullName) values ('Robert Smith'),('Kim Billings'); -- id's 1 and 2 insert parent(fullName) values ('Robert Smith'),('Kim Billings'); insert child(fullName,myParent) values ('Little Bobby',1),('Sarah Smith',1); insert child(fullName,myParent) values ('Scout Billings',2),('Bart Billings',2); 

O que mostra o seu esquema significa?

A seção acima chamada Esquema mostra o que eu poderia digitar para a criação de tabelas de tabelas parent e child . Quando pedimos o seu esquema, você pode produzir com chamadas como

 show create table parent; show create table child; 

e colando esses resultados na sua pergunta. Podemos formatar o texto se você é novo, não se preocupe.

 CREATE TABLE `parent` ( `id` int(11) NOT NULL AUTO_INCREMENT, `fullName` varchar(100) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE `child` ( `id` int(11) NOT NULL AUTO_INCREMENT, `fullName` varchar(100) NOT NULL, `myParent` int(11) NOT NULL, PRIMARY KEY (`id`), KEY `mommy_daddy` (`myParent`), CONSTRAINT `mommy_daddy` FOREIGN KEY (`myParent`) REFERENCES `parent` (`id`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

A saída acima será um pouco diferente do que eu inicialmente inseri. Principalmente back-ticks em torno de nomes de tabelas e colunas e chaves e restrições de chave estrangeira aparecendo diferentes. Essa saída acima é o que precisamos junto com dados de amostra da sua carga de dados.