Einschränkungen für Filetables

hevapeyma

Benutzer
Beiträge
23
Liebe Community,

ich habe eine Frage bezüglich der Filetables. Ist es möglich die Dateien einzuschränken, das heißt nur bestimmte Dateien wie .pdf, .jpg oder .doc zuzulassen? Und wenn ja wie setzt man das um?

Vielen Dank & viele Grüße,

Thomas
 
Werbung:
Schonmal versucht einen Check-Constraint oder einen Trigger auf die Tabelle zu legen? Wäre mein erster Gedanke, habe aber noch keine Filetable verwendet.
 
Also ich habe es mit dem Check Constraint versucht:


Code:
CREATE TABLE FileTable2 AS FileTable

WITH (

FileTable_Directory = 'FileTable',

FileTable_Collate_Filename = database_default),

CONSTRAINT file_type CHECK (file_type = 'jpg' OR 'pdf' OR 'doc'),


Ich bin nicht sehr versiert in SQL aber ich denke es funktioniert nicht, weil hinter den Spaltennamen filetyp kein Datentyp steht. Oder hab ich irgendeinen Denkfehler?

Im Vorraus vielen Dank!
 
Sollte da nicht der Name einer Spalte stehen? Ich seh keine Definition einer Spalte namens "file_type". Allerdings kenne ich M$SQL auch nicht ...
 
Die Spaltenbezeichnungen sind im FileTable fix, da kann man nichts ändern. Man hat auch keine Möglichkeit, den Datentypen einzusehen. So wird in file_type standardmässig der Dateityp gespeichert. Wie gesagt, die Spaltenbezeichnungen sind fix.
 
Zuletzt bearbeitet von einem Moderator:
Nein mag er leider auch nicht. Er meckert schon bei dem Koma in der 4. Zeile und er erkennt das file_type nicht. Im übrigen auch nicht wenn ich ALTER TABLE mache. Ich befürchte das das Check nicht funktioniert mit den FileTable. Man findet auch nichts bei google.

Aber trotzdem vielen Dank!
 
Also ich habe bisher nicht mit Triggern gearbeitet aber ich habe es versucht:

Code:
CREATE TRIGGER file_type_progr 
ON  FileTable2
AFTER INSERT
AS
BEGIN
IF (file_type = ‘jpg‘ OR ‘pdf’ OR ‘doc’) THEN INSERT INTO FileTable2,
END

Er erkennt nachwievor die Spalte '' file_type" nicht und er akzeptiert das jpg nicht, das pdf und doc schon.

Vielen Dank falls noch jemand eine Idee hat!

Grüße,
Thomas
 
Aus dem Bauch heraus und mit dem Wissen zu PG: das sollte eher ein Before-Trigger sein, und entweder New oder NULL zurückgeben. In einem Trigger, der bei Insert feuert, wieder ein Insert zu machen, feuert einen Trigger, der einen Insert macht und einen Trigger feuert, der einen Insert macht und ...
 
Es ist immer das gleiche Problem: Er erkennt die Spalte ' file_type" nicht. Das "BEFORE" heißt in MS SQL übrigens "INSTEAD OF". Ich denke das Konzept der FileTables ist zu starr für solche Sonderwünsche. Man hat auf der einen Seite die einfache Handhabung, die man sich mit einer gewissen Inflexibilität erkauft. Man kopiert ja per Drag & Drop im Windows Explorer die Dateien in den entsprechenden Ordner, da kann SQL ja nicht prüfen.

An alle Helfer ein Dankeschön!
 
Instead of Trigger sind auch explizit ausgeschlossen, siehe Link den ich gepostet habe. Es scheint wirklich noch zu neu und zu starr zu sein, wirst du erstmal auf Aplikationsebene lösen müssen.

Kannst du die Spalte file_type denn nachträglich in WHERE ansprechen?
 
Werbung:
Probier mal:
Code:
CREATE TRIGGER file_type_progr
ON  FileTable2
AFTER INSERT
AS
BEGIN
IF ( SELECT count(*) FROM INSERTED WHERE file_type = 'jpg' ) > 0
BEGIN
RAISERROR('asdf',16,1)
ROLLBACK
END
END
Und versuch dann mal ein jpg zu inserten.
 
Zurück
Oben