In an interesting blog by Conor Cunningham, 'The Trouble with Triggers', he says: "The problem with this area is that there is a great temptation to think about databases procedurally, as you would with a programming language like C++ or C#. You can write code that looks like a procedural function call and have it get called for each insert into table! Before you know it, non-database programmers are checking in code to your production sysem. Suddenly, your application grinds to a halt because a trigger plan has no index or is poorly designed. Databases are great tools for working on SETS of rows." In another related blog, 'Triggers...Evil?', there is this comment with an insightful Freudian slip: James Luetkehoelter said: >Some sorts of demoralization lend themselves to triggers... I would say this hits the nail on the head. I could understand a developer getting a case of depression triggered by Conors article. Triggers were 'implemented' to work efficiently on tables (sets) not on rows. The principle that's operating here is that how something was implemented to be most effective is the basis for what's best in application development. Are you kidding me, has everyone gone nuts? ☺ Because triggers don't consider a row as a primary concept 'functional' programmers, application developers, must 'unlearn' their database contrarian views. This is Celkos 'them' vs. 'us' nonsense. Never mind that the real subject is application development and possibly a theory that would best serve it, the basis for key concepts is what a bunch of programmers did for a MS product manager. Talk about the tail wagging the dog ☺ Not only is the absence of a 'row' type or at least concept antithetical to a relational dbms but it's central to application development. Perhaps to even the score MS decided developers should learn entities and unlearn sql entirely, LINQ. Or perhaps we'll get a hole new science of application development based on what works fastest ☺
Dataphor SQL RAC (Relational Application Companion)
A site of hope for those looking for a true relational database system
- a one-one requirement constraint with dataphor (1)
- anatomy of sql server part I - what is a stored procedure (1)
- anatomy of sql server part II - the unit test as part of the database (1)
- anatomy of sql server part III - what does deferred name resolution really mean (1)
- censoring sql posts (1)
- creating an opposite constraint in dataphor (1)
- dataphor (2)
- Dataphor (7)
- dataphor # 13 a table as a parameter (1)
- dataphor - download and start working with it (1)
- dataphor - fixed sized word segments (1)
- dataphor # 10 sql mythology (1)
- dataphor # 11 string differences (1)
- dataphor # 12 trimming a string (1)
- dataphor # 14 sql the meaning of Update..From (1)
- dataphor # 15 views with substance (1)
- dataphor # 16 inclusive vs exclusive solutions (1)
- dataphor # 17 a visual look at ranking queries (1)
- dataphor # 18 data scrubbing using lists (1)
- dataphor # 19 create intervals over strings (1)
- dataphor # 20 browsing an sql window (1)
- dataphor # 21 an example of relational division (1)
- dataphor # 22 reusable procedures (1)
- dataphor # 23 repley to Michel (1)
- dataphor # 24 basics of the table type (1)
- dataphor # 25 extending the dense rank function (1)
- dataphor # 26 query a hierarchy with explode (1)
- dataphor # 27 combine strings with Split and Concat (1)
- dataphor # 28 constants and variables or sql and D4 (1)
- dataphor # 29 another example of relational division (1)
- dataphor #1 introduction (1)
- dataphor #2 splitting strings (1)
- dataphor #3 string concatenation (1)
- dataphor #4 comment (1)
- dataphor #5 comment (1)
- dataphor #6 formal definition (1)
- dataphor #7 sql: table this (1)
- dataphor #8 list to table (1)
- dataphor #9 table constraints (1)
- dataphor creating lists in a query (1)
- extracting numbers from a string with dataphor (1)
- jeff modens dynamic crosstabs for sql server (1)
- linq to sql the what and why (1)
- linq to sql as a window of opportunity to sql users (1)
- linq to sql should be important to sql users (1)
- linq to sql vs. older 4GL attempts (1)
- listing missing table item (1)
- Multiple cascade paths to the same table (1)
- RAC (4)
- RAC #1 comment (1)
- RAC #2 example (1)
- RAC #3 finding the Nth number in a string (1)
- RAC #4 Sql Server 2005 ranking functions vs. Rac ranking (1)
- sorting a delimited string by its numerical string parts (1)
- sql an example of extreme implicit conversions (1)
- sql can't handle complicated cascading updates (1)
- sql CTE should be a variable not a value (1)
- sql dense rank for identifying consecutive runs (1)
- sql is there really a table variable (1)
- sql ranking functions explained by relational types (1)
- sql server triggers are best set based (1)
- sql the idea of using substring to simulate lists (1)
- sql the undefined trigger in Sql Server (1)
- sql vs relational on tables (1)
- sql what the sql CTE covers up (1)
- types and procedures (1)
Wednesday, July 16, 2008
Demoralization by trigger
Subscribe to:
Post Comments (Atom)
2 comments:
Hi!
I just wanted to say that I enjoy a lot reading your blog, and I also think that Dataphor (or something like it) will hopefully replace current pseudo relationa technology with true relational technolgy.
On the other hand, I have to admin that the layout of you blog is a little ankward, I hope that you take no offence if I suggest you to change it, I think it would be easier for me (and others that might visit your site) if you used, for example the "Minima Strech" template.
Regards,
(Sorry for posting twice, I got a little confused and posted this in a another very old article you wrote)
Hello Luxspes,
Thanks for dropping by. Feel free to comment on anything pro or con or suggest a topic. I'll see what I can do about changing the layout :)
best,
steve
Post a Comment