Zápis přes FormView do dvou tabulek   zodpovězená otázka

ASP.NET WebForms

Zdravím, potřeboval bych nějak přes komponentu FormView, udělat zápis do dvou tabulek naráz. Jaké je nejvhodnější řešení?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Myslíte zápis do 2 databázových tabulek v MS SQL Serveru?

Pokud ano, tak stačí zapsat 2 inserty do atributu InsertCommand.

Příklad:

<asp:SqlDataSource... InsertCommand="insert into tabulka1 (sl1, sl2) values (@hod1, @hod2); insert into tabulka2 (sl3, sl4) values (@hod3, @hod4)" ...

Raději ale vytvořte uloženou proceduru, která oba inserty provede a SqlDataSource potom zavolá pouze tuto proceduru (nezapomeňte změnit atribut InsertCommandType na StoredProcedure).

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Ještě jeden dotaz, v případě že mám oracle databázi, jde u insertcommandu oddělit nějak dva inserty? Se středníkem jako je v příkladu to nejde.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

A to potřebujete zapisovat stejné hodnoty nebo nějakou z hodnot do jedné DB a ostatní do druhé?

Pokud jde o první případ,tak bych to řešil spíše na úrovni DB - pomocí triggeru

nahlásit spamnahlásit spam 0 odpovědětodpovědět

S triggery bych byl opatrný. Někdy se určitě hodí, ale nemám je moc rád. Jedná se o poměrně skrytou aplikační logiku a když za roku potřebujete něco odladit a zapomenete že tam ten trigger je, trochu se u toho navztekáte. Navíc trigger se Vám spustí při každém insertu do té tabulky a to taky nemusí být žádoucí.

Pokud se tedy jedná o zápis stejných dat do víc tabulek přikláněl bych se spíše k tomu řešení přes stored proceduru. Tak to také řeším a je to jednoduché a transparentní.

Pokud se jedná o různá data která spolu souvisejí ale jsou v jiných tabulkách (třeba info o produktu a zákazníkovi) a je možné je propojit přes nějaké ID, tak by tu byla ještě možnost vytvořit si view a insert provádět na něj.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

I druhý případ, kdy se různá data vloží do více tabulek, bych řešil uloženou procedurou. Na vstupu dostane všechna potřebná data a vloží je do více tabulek. Proč si to komplikovat view?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

No, view je jednodušší a univerzálnější. Na druhou stranu do složitějších view stejně insertnout nejde.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Stejné hodoty se zapisovat nebudou, takže trigger můžu vypustit, nejlepší to bude asi přes tu proceduru.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback