Your plan sounds fine. The only problem (not necessarily a big one) is that a lot of DBMSs are optimised to use integer keys. There are two things you could do to take advantage of this:
- Assign each machine a unique Id (1 to 999) and make the PK sequence
- 1000 + machine id
- Just use a sequence as the PK. The only time you need worry about collisions is when you combine data across multiple machines; when you do that you can add the source machine name/id to the select to distinguish them. (This won't work, of course, if data from different machines is copied to all others.)
I don't think the table name is necessary, though. It's standard practice not to put it into a key: you know the table it came from because you know the query; adding this redundant data is over-engineering.