Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 1 Pomógł: 0 Dołączył: 12.10.2009 Ostrzeżenie: (0%)
|
Przede wszystkim witam forumowiczów!
Czytałem wiele artykułów jak i kursów ale na swój problem nadal nie znalazłem rozwiązania. Mniej więcej problem polega na tym: W MS SQL 2008 Express mam pewną tabele (przyjmę że nazywać się będzie Tabela1). Chciałbym do tej tabeli dodać jeszcze jedną kolumnę ale z względu iż jest to tabela systemowa (programu księgowego) to chciałbym utworzyć drugą tabelę... w tym miejscu jest problem gdyż Tabela1 zawiera 2 kolumny (ID i Nazwa), a ja chcę dodać jeszcze 'Kategorie'. Jak mogę stworzyć nową tabelę (Tabela2) która miała by 3 kolumny ID = Tabela1.ID, Nazwa = Tabela1.Nazwa i Kategoria? Wiem że mogę użyć INSERT do wklejenia tych kolumn ale w przypadku gdy w Tabeli1 pojawią się zmiany to Tabela2 ich nie uwzględni. Proszę o pomoc dla laika o ile to możliwe i z góry dziekuję Marcin |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 49 Pomógł: 8 Dołączył: 5.12.2008 Ostrzeżenie: (0%)
|
Utwórz sobie tabele z kluczem obcym tabela1_id i kolumna kategoria. Kolumna z nazwą jest ci niepotrzebna bo przecież już jest w tabeli 1. Potem pobierasz dane z dwóch tabel za pomocą jednego joina i nie musisz nic synchronizować. Poza tym o co ci chodzi z tym indeksem?
|
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 33 Pomógł: 5 Dołączył: 2.11.2006 Skąd: 52.259 °N, 21.020 °E Ostrzeżenie: (0%)
|
Założenie tabeli z kluczem obcym może zaburzyć działanie programu księgowego podczas usuwania rekordów z tabeli1. Tak jak pisze Theqos najrozsąniejszym wyjściem jest tabela2 z polami id, kategoria. Jeśli bardzo zależy Ci na polu nazwa w tabeli2 to proponuję taki kod do synchronizacji tabel:
Jeśli przed modyfikacją tabeli1 powstrzymywało Cię coś innego niż warunki licencji to można rozbić to wpasować w trzy triggery i w przypadku insert i update używać tabel inserted i updated w celu optymalizacji. |
|
|
|
![]() ![]() |
|
Aktualny czas: 9.06.2026 - 15:36 |