Pergunta

Digamos que eu tenho estas 2 tabelas Questype e Ques:-

QuesType

QuestypeID|QuesType      |Active
------------------------------------
101       |QuesType1     |True
102       |QuesType2     |True
103       |XXInActiveXX  |False



Ques

QuesID|Ques|Answer|QUesTypeID|Active
------------------------------------
1     |Ques1|Ans1 |101     |True
2     |Ques2|Ans2 |102     |True
3     |Ques3|Ans3 |101     |True

Na tabela Questype:- QuestypeId é uma chave primária

Na tabela Ques:- Quesid é uma chave primária e o ID do Questype é a chave estrangeira que refere-se a QuestypeID da tabela Questype

Agora não consigo excluir registros da tabela Questype, só posso tornar o Questype inativo ao configurar ativo = false. Não consigo excluir os Questypes permanentemente por causa da relação de chave estrangeira que tem com a tabela Ques. Então, acabei de definir a coluna ativo = false e esses Questypes, em seguida, não aparecem na minha grade quando está vinculado.

O que eu quero fazer é ser capaz de excluir qualquer o Questype Permamnely. Agora ele só pode ser excluído se não estiver sendo usado em nenhum lugar da tabela de perguntas, certo?

Então, para excluir qualquer missão permanentemente, pensei que era isso que eu poderia fazer:-

Na grade que exibe missypes, eu tenho esta caixa de seleção para ativo e um botão para excluir. O que eu pensei que era, quando um usuário faz com que algum evento seja inativo, o evento OncheckChanged () será executado e isso terá o código para excluir todas as perguntas na tabela de perguntas que estão usando esse QuestypeID. Então, na grade do Questype, esse Questype mostraria como desativado e só então um usuário pode excluí -lo permanentemente.

Estou pensando corretamente?

Atualmente no meu procedimento armazenado de deleteQuestype, o que estou fazendo é:-

Definindo o Active = False e Configurando Questye = Alguma string como xxinactivexx

Existe alguma outra maneira?

Edite e se eu quiser implementar apenas dessa maneira, como primeiro o usuário desative o Questype e somente se for desativado que o usuário pode excluí -lo permanentemente. Essa é a lógica correta?

Foi útil?

Solução

Eu acho que o que você precisa fazer é colocar o

ON DELETE CASCADE

Cláusula sobre sua restrição de chave estrangeira. Isso excluirá automaticamente linhas da sua tabela de perguntas quando a linha do Questype correspondente for excluída.

Outras dicas

Você pode excluir apenas o QuesTypes desativado.

Antes de excluir a QuesType você terá que consultar o banco de dados e ver se QuesType.Active = false. Se sim, você pode excluir todas as linhas da tabela infantil que fazem referência a que QuesType.Id (Isso é conhecido como um cascata excluir). Você também pode definir um valor nulo na coluna QuestypeID nas linhas infantis.

Ler este livro online Para aprender sobre a Cascade On Excluir | Defina a cláusula nula. Esta cláusula permitirá que você faça o que quiser.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top