Generally (ie, this isn't Delphi-specific), you can't insert into more than one table at a time*; what you do is insert into your independent tables first, then insert into your dependent tables after that. You can make this into an atomic operation via the use of transactions, but that isn't absolutely necessary in many cases.

For example, if you were developing an order application which used one table to store the non-line-item order data (like who is placing the order, addresses, billing, payment info, etc), and another table to store the line-item data (quantity, part number, description, price, etc), and you wanted to "insert" the order into your database/tables, then what you would do is insert the non-line-item record into its table first, then insert the line-item data into their table after that. This is because you'll likely have a dependency where the line-item records link back to a specific order in the non-line-item table and, thus, can't insert them until you insert the other record first.

On the surface, Database Views make it seem like you could do what you are wanting to do, but in reality, the underlying database engines won't support it. It is because Views are intended to pull and select data in an organized way, but they don't necessarily contain all of the fields for all of the tables they are selected from, which can be a serious problem if you tried to do an insert into one like that. So, to avoid the issue, and the complexity that would be required to resolve it, they just make the programmer do that work in the code.

* There is a trick that you can use in some cases where you can use an insert trigger on a table which, when a record is inserted into it, it then does the inserts on other tables as well; however, that trigger must have access to the data that you want to insert, so this trick may be of limited use.