|
Quote: no one here has done something like that yet.
Well for everything there's a first time , don't you think ?
I've thought the idea for a second database , but I think will be very complicated.For example :
Record1- has childs but also is a child for another table.
I delete record 1 and its child.
But to put this on the second database , I need the parent of record 1 too ( which is not deleted )....
So I think the idea to have a kind of script that could create only the deleted record would be more easy.
|
|
|
|
|
satc wrote: Well for everything there's a first time , don't you think ? Sure. But there's a reason why there's no "standard procedure" for this. Because it's a mess, regardless how you approach it. The day will come you regret you opened this can instead of telling your client not to hard-delete a record if he wants to be able to recover it or to leave it up to the DBA
If the brain were so simple we could understand it, we would be so simple we couldn't. — Lyall Watson
|
|
|
|
|
So :
" A problem difficult to resolve" = " It's better to not implement this"
If the restoring is a useless feature , so maybe we can tell Microsoft to remove from file system too.
|
|
|
|
|
satc wrote: So :
" A problem difficult to resolve" = " It's better to not implement this" Why attempt to implement in code something that
- is very complicated and prone to be buggy or to break with changes
- is likely to be used only very rarely
- can be solved in a different way* much easier ?
* : Through backups / DBA. If you want to care for the case that a record gets deleted before a database backup has run then simply disallow hard-deletion on the same day.
satc wrote: If the restoring is a useless feature , so maybe we can tell Microsoft to remove from file system too. Restoring after emptying the recycle bin isn't guaranteed to succeed - it's likely that parts of the file have already been overwritten.
If the brain were so simple we could understand it, we would be so simple we couldn't. — Lyall Watson
|
|
|
|
|
A database is not a filesystem, and no, it would not be very wise to start depending on a blob that "may or may not be" overwritten and hence, may or may not be recoverable.
satc wrote: " A problem difficult to resolve" = " It's better to not implement this" I'm looking forward to your article on how you solved it
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
Eddy Vluggen wrote: I'm looking forward to your article on how you solved it Indeed
If the brain were so simple we could understand it, we would be so simple we couldn't. — Lyall Watson
|
|
|
|
|
Well , I try it to resolve after getting a final word from you like this : " On my opinion there's no way to do this" . Can you claim this ?
|
|
|
|
|
As I tried to communicate with my previous replies, it's not impossible but far from economical.
If the brain were so simple we could understand it, we would be so simple we couldn't. — Lyall Watson
|
|
|
|
|
satc wrote: I try it to resolve after getting a final word from you You already had it several times, and I will think twice before getting involved again
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
No I didn't .
All I get from you is with simple words " ... it's not good to do this".
Give me a clear post : " ..for my opinion , this can't be done at all..."
Anyway , I think to try with another database that is identical with the main database , except that has no relationship. This will help to save a deleted record even when the parent is not deleted. But to find the parent , on the table will be a column that will contain the parent's table name..... That is for the moment.
|
|
|
|
|
satc wrote: Give me a clear post : " ..for my opinion , this can't be done at all..." Sure it can be done
satc wrote: That is for the moment. You're welcome, have a great day
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
You really need to try and limit your over engineering of the systems. If it is your client requiring this type of functionality you need to educate them. If it is yourself trying to meet every conceivable scenario you need to take the advice of more experienced developers.
Use the soft delete flag suggested, if the user then hard deletes TOUGH luck, they need to take responsibility for their actions. In 25+ years of LOB applications I have never had to implement such a system as you are proposing.
Never underestimate the power of human stupidity
RAH
|
|
|
|
|
I respect the opinions of more experienced developers.
That I doesn't accept , it's the response ".. don't do this .." when a complicated problem is asked for help.
I think an experienced developers will answer :
" An idea to resolve your problem is :..........."
"But for these reasons..... it's better to not implement it ".
|
|
|
|
|
I'm not a very experienced developer and I haven't read the whole Thread ...
So I don't know if my answer is still given ...
When I read the first postings in this Thread my idea was :
You take your contents, which should be deleted out of your database and put is in an new one, which contains only this deleted things.
Now, if you want to recover it, you only have to chose the entry of the "deleted"-database and put it back to the "work"-database.
This "deleted"-database is only controlled by the application and could not directly accessed by the user.
|
|
|
|
|
This method have the problem with relationship.
I have explained in my earlier post :
Let suppose a record that have Childs , but this record itself is a child of another record.
If this record is deleted with its Childs , when I put on the other database , I will get an error because the parent of this record is not deleted , and will not exist on other database.
I'm thinking to get a identical table without the relationships , but I'm still testing this idea.
|
|
|
|
|
I think, you have to manage it like a class or a collection / List (of T).
If you "delete" an entry it isn't enough to store the data to a new Destination. You also have to memorize from where the data comes (and perhaps to whom the data belongs).
|
|
|
|
|
yes but as I said keeping the relationship inside the other database it's not possible. So I have to find another way to identify the parent of a deleted record. Maybe I can put another column to each table on the other database , and when a record is deleted , I can put on this column the parent's table name before saving to other database. ???
|
|
|
|
|
It smells like you have a weird kind of depandancy inside your database ...
|
|
|
|
|
Why is wired ?
Table 1 - Master records.
Table 2 - Child records for table1
Table 3 - Child records for table2.
If I delete a record from table2 with all the childs in table3.
The problem that I've described will happen.
|
|
|
|
|
Not "wired" - weird - that means a kind of crazy ...
Back to your question.
If an element of "Table2" represents "Table3" as datatable then you have to memorize the element WITH it's containing structure. I've never made this but I can't imagine, where the problem is.
If you cut it from the datatable then you have a List inside a List completly independant from the Content). The included List is an Object like a single element too.
|
|
|
|
|
Sorry , the problem is not for Table 2 and table3 , but with table1.
For example :
Table 1 ( ID=25 , Name=nm1 )
Table2 ( ID=4 , parentID=25 , name=nmtb2 ) ( foreign key - on parentID )
Table3 ( ID=50 , ParentID=4, name=nm3 ) (foreign key on ParentID )
Now if I delete the record with id=4 from table2 together with the child in table3 , when I try to put these on the other database , I get an error , because the record with id=25 that is the parent of the deleted record , doesn't exist on Table1 (on the other database) because is not deleted.
|
|
|
|
|
Only if he is paid. We're volunteers.
People will stop answering altogether if you dismiss each suggestion. We're trying to help, which you obvious do not like.
--edit
Ah , so if I pay you , you will change your opinion about this problem .
Confused |
No, but I'd be politer in telling you what can and cannot be done, and I'd be paid to correct your ignorance. Since I'm not paid for it, I'm going to say goodbye - that's how it works, once it becomes an annoyance, the help stops.
Good luck, you will need it.
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
modified 29-Jun-15 5:20am.
|
|
|
|
|
Ah , so if I pay you , you will change your opinion about this problem .
|
|
|
|
|
So if I pay you , you will change the opinion about this question and you will give an idea ?
|
|
|
|
|
Regardless of how much you offer, the answer will be a no.
Simply because I don't want to.
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|