p0mian
Pomocy #sql #programowanie Mam program kasowy w którym jest cennik. Jest też data ważności cennika do wczoraj! Nie da się tego edytować, wchodzę więc w sql managment studio i klikam na cenniki i edit 200 rows - jest tam komórka z datą i flaga blokady edycji. Ale po zmianie wartości komórka zostaje natychmiast przywrócona do wartości pierwotnej. Czym to jest zablokowane? myślałem, że przez managment studio można zmienić co się chce.. najwyżej skopie się program - ale tu jest jakaś blokada. Mam backup w razie czego.
  • Najlepsze
  • Wszystkie komentarze
m.....i
m.....i
@p0mian: zablokowane jest constraintem. Zmień cennik w aplikacji, nie edytuj tabeli. Albo zdropuj constraint i yolo.
RRybak
@p0mian: nie wiem co robisz, ja jakich danych i oprogramowaniu, ale z reguły jeśli nie da się edytować zestawu, to nie ma w zapytaniu kolumny z unikalnym kluczem.
Dwa - jeśli zablokowana jest jedna kolumna, to może oglądasz widok, a nie dane.
Trzy. Zawsze można spróbować zupdatować zapytaniem nowadata WHERE staradata
m.....i
m.....i
@p0mian: rozwiń jeszcze w Tables folder Triggers i zobacz czy czegoś tam nie ma. Może być coś ustawione przez programistę bazy, żeby nie można było tego zmienić manualnie. Może to też być jakaś procedura która to przywraca totalnie gdzieś indziej, że ciężko to znaleźć jak nie jesteś programistą tego systemu, nie masz dokumentacji ani nikogo obeznanego pod ręką.
m.....i
m.....i
@p0mian: jak odswiezysz tabele to dalej tam jest? To sprobuj wykonac query ALTER TABLE tabela
DROP CONSTRAINT nazwaconstrainta;
m.....i
m.....i
@p0mian: daj prawym script trigger as create to new query window i powinieneś dostać kod triggera. Jeżeli zobaczysz, że tam jest coś zmieniane np. twoje pole to możesz dać tego triggera disable i przetestować wtedy ten swój update.
m.....i
m.....i
@p0mian: no to jak jest encrypted to pewnie możesz co najwyżej spróbować wyłączyć oba w ciemno i zobaczyć czy coś pomogło. No ale generalnie tak jest z różnymi systemami czy erpami, że nie da się tak prosto zmienić coś bezpośrednio w bazie. I w sumie dobrze, bo ryzykujesz wtedy integralnością danych w tym systemie, więc lepiej nie gmerać.
m.....i
m.....i
@p0mian: no da się, po prostu UPDATE tabela SET kolumna = 'wartosc'
p0mian
p0mian Autor
1
@madry_i_mieciutki: czyli wystarczyło bez tego WHERE co sobie wygooglowałem, dzięki, zaczyna mi się to podobać - nie bawiłem się wcześniej kwerendami prawie wcale. W mie dzyczasie odkryłem, coś co rozwiązało chyba problem - jedna kolumna to była flgRodzaj - wartość binarna - zauważyłem, że nowe cenniki mają 1 a ten ma 0. Okazało się, że zmiana tej flagi wyłączyła ochronę i umożliwiła zmianę daty ważności cennika (mimo, że flaga flgUsrMod,
niewiemcotutajrobie
@p0mian: Jebnij se apdejta. Na tej edycji w SSMS nie warto polegać.
p0mian
p0mian Autor
0
@madry_i_mieciutki: jak sprawdzić czy jest taki constrain (trochę zielony jestem)
m.....i
m.....i
w SSMS jak rozwiniesz tabelę plusikiem to masz Columns, Keys i Constraints
p0mian
p0mian Autor
0
@madry_i_mieciutki: dobra znalazłem to ale jak się tego pozbyć teraz
p0mian
p0mian Autor
0
@madry_i_mieciutki: bo jak robię delete prawym to jest error
m.....i
m.....i
@p0mian: bo chyba nie masz odpowiednich uprawnień. Nie powinieneś tego robić tylko skontaktować się z dostawcą rozwiązania, więc pamiętaj o backupie jak coś.
p0mian
p0mian Autor
0
@madry_i_mieciutki: błąd jest taki:

The Default 'DF_POSCENNIKDataD_01BF026E' does not exist on the server. (SqlManagerUI)

Więc raczej nie uprawnienia
p0mian
p0mian Autor
0
teraz błąd is not a contraint
m.....i
m.....i
@p0mian: na pewno dobrze podałeś nazwę tabeli (wraz ze schema) i constrainta? Generalnie jak masz new query to w lewym górnym rogu pownna być wybrana nazwa twojej bazy, a nazwa tabeli powinna być pełna ze schema czyli tym przedrostkiem. Najlepiej przeciągnąć tą nazwę i przerzucić niż samemu pisać. Tak samo z constraintem.

Jeżeli zrobisz SELECT * FROM sysobjects WHERE name = nazwaconstrainta
to powinno ci coś wyrzucić w tabeli. To
p0mian
p0mian Autor
0
@madry_i_mieciutki: ok racja, miałem za mało podkreślników w nazwie - usunęło się niestety nie pomogło - zmiana wartości przez edit rows nadal nie działa - wraca do poprzedniej automatycznie
p0mian
p0mian Autor
0
@madry_i_mieciutki: jak robię przez update to wyświetla one row affected a po odświeżeniu jest wartość jaka była
p0mian
p0mian Autor
0
@madry_i_mieciutki: są tam dwa ale nie mogę zrobić Modify bo jest nieaktywne - jak podejrzeć co tam jest triggerowane?